我想要做的是选择每个单元格的第一个元素,而不管列数或行数(它们可能会根据用户定义的标准而改变)并从数据中创建一个新的 pandas 数据框。我的实际数据结构与下面列出的类似。
0 1 2
0 [1, 2] [2, 3] [3, 6]
1 [4, 2] [1, 4] [4, 6]
2 [1, 2] [2, 3] [3, 6]
3 [4, 2] [1, 4] [4, 6]
我希望新数据框看起来像:
0 1 2
0 1 2 3
1 4 1 4
2 1 2 3
3 4 1 4
下面的代码生成了一个类似于我的数据集,并尝试在我的代码中做我想做的事情但没有成功(d),并模仿我在类似问题中看到的成功(c;但是,只有一列)。类似但不同问题的链接在这里: Python Pandas: selecting element in array column
import pandas as pd
zz = pd.DataFrame([[[1,2],[2,3],[3,6]],[[4,2],[1,4],[4,6]],
[[1,2],[2,3],[3,6]],[[4,2],[1,4],[4,6]]])
print(zz)
x= zz.dtypes
print(x)
a = pd.DataFrame((zz.columns.values))
b = pd.DataFrame.transpose(a)
c =zz[0].str[0] # this will give the 1st value for each cell in columns 0
d= zz[[b[0]].values].str[0] #attempt to get 1st value for each cell in all columns
原文由 Devon Oliver 发布,翻译遵循 CC BY-SA 4.0 许可协议
您可以使用
apply
并选择列表的第一个值使用 str 索引:另一个解决方案
stack
和unstack
: