如何拆分从函数输出的坐标列表?

How can I split a list of coordinates that output from a function?

提问人:Jack S 提问时间:1/14/2022 最后编辑:Ken WhiteJack S 更新时间:1/16/2022 访问量:124

问:

在python中,我在Excel中将多个坐标列表(不同长度)以表格形式写入行,我想将它们拆分为所需的列数,以便在每个列表的相应行中每列设置一个列: .如果我直接进入文本到列,我无法选择多个分隔符(去掉方括号等),所以我决定先做一些处理:[(x1, y1), (x2, y2), ..., (xn, yn)]x1,y1 | x2,y2 | ... | xn,yn

我现在有

=MID(B2, 2, LEN(B2)-2)
(x1, y1), (x2, y2), ..., (xn, yn)
=SUBSTITUTE(C2," ", "")
(x1,y1),(x2,y2),...,(xn,yn)
=SUBSTITUTE(D2, "),(", ");(")
(x1,y1);(x2,y2);...;(xn,yn)

因此,从理论上讲,我现在可以使用文本到列并用作分隔符。但是,当我尝试这样做时,它会尝试拆分该单元格中的公式,而不是公式生成的文本:按分号拆分单元格;

有谁知道我可以使用文本本身的方法,或者更好的是,一种更简单的整体数据处理方式?谢谢!

Excel 数据操作

评论

0赞 DS_London 1/14/2022
“从 Python 开始,我写了多个列表......到 Excel 中的行”。你到底是怎么做到的?可能值得看看你是如何编写的,因为在编写之前在 Python 中操作数据会更容易。
0赞 Jack S 1/15/2022
在 python 中,我有几个类似的字典,其中键映射到各种数据类型,其中之一是地理坐标列表。然后,我将字典转换为 pandas 数据帧(键作为列标题,值作为条目),并写入 excel。因此,例如,“点”列和“游戏 5”行下的条目是该特定游戏中所有地理点的列表。
0赞 Jack S 1/15/2022
另外需要澄清的是,坐标对的数量会随着每场比赛而变化。它可能在 10 到 50 之间或更多,因此在数据帧中将每个点作为单独的条目会很有问题,因为某些行会比其他行长。
0赞 DS_London 1/16/2022
您能举例说明您希望输出的外观吗?

答:

0赞 DS_London 1/16/2022 #1

如果我理解正确,起始 DataFrame 可能如下所示:

                                         Points
Game1                  [(1, 2), (3, 4), (5, 6)]
Game2                         [(7, 8), (9, 10)]
Game3  [(11, 12), (13, 14), (15, 16), (17, 18)]

DataFrames 可以处理不同长度的行:

import pandas as pd

input_df = pd.DataFrame([
                       [[(1,2),(3,4),(5,6)]],
                       [[(7,8),(9,10)]],
                       [[(11,12),(13,14),(15,16),(17,18)]] ],
                       index=['Game1','Game2','Game3'],
                       columns=['Points'])

df = pd.DataFrame( data=[['{0:},{1:}'.format(a,b) for a,b in r] 
                             for r in input_df['Points'].tolist()],
                   index=input_df.index  )

df.to_excel('c:\\somepath\\coords.xlsx',header=False)

生成的 Excel 工作表如下所示:

enter image description here