Dev*_*ver 3 arrays dataframe python-3.x pandas
我想要做的是选择每个单元格的第一个元素,无论列数或行数(它们可能根据用户定义的标准更改),并从数据中创建一个新的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]
Run Code Online (Sandbox Code Playgroud)
我希望新数据框看起来像:
0 1 2
0 1 2 3
1 4 1 4
2 1 2 3
3 4 1 4
Run Code Online (Sandbox Code Playgroud)
下面的代码生成一个类似于我的数据集,并试图在我的代码中做我想做的事情而没有成功(d),并模仿我在类似问题中看到的成功(c;但是,只有一列).这里有类似但不同的问题的链接:Python Pandas:在数组列中选择元素
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
Run Code Online (Sandbox Code Playgroud)
您可以使用apply和选择列表的第一个值使用str索引:
print (zz.apply(lambda x: x.str[0]))
0 1 2
0 1 2 3
1 4 1 4
2 1 2 3
3 4 1 4
Run Code Online (Sandbox Code Playgroud)
print (zz.stack().str[0].unstack())
0 1 2
0 1 2 3
1 4 1 4
2 1 2 3
3 4 1 4
Run Code Online (Sandbox Code Playgroud)
我会使用applymapwhich 将相同的功能应用于 DataFrame 中的每个单独的单元格
df.applymap(lambda x: x[0])
0 1 2
0 1 2 3
1 4 1 4
2 1 2 3
3 4 1 4
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3367 次 |
| 最近记录: |