将2D数组中的Pandas列拆分为单独的列

ca1c2owp  于 2023-03-06  发布在  其他
关注(0)|答案(1)|浏览(124)

我有一个panda Dataframe ,它当前有多个2D数组列表,类似于

0 [[AA, 2], [AB, 1], [AC, 1]]
1 [[AA, 3], [AC, 2], [AE, 1]]
2 [[AB, 2], [AC, 1], [AD, 1]]

是否有办法单独创建一个类似于下图的数据框

AA AB AC AD AE
0  2  1  1  0  0
1  3  0  2  0  1
2  0  2  1  1  0

如果x = [[AA, 2], [AB, 1], [AC, 1], [AA, 3], [AC, 2], [AE, 1],[AB, 2], [AC, 1], [AD, 1]]
那么现在我有

arr = []
for i in x:
  i = np.array(i)
  arr.append(i)

df = pd.DataFrame(arr)

我可以通过x[0][0][0]来挑出第一个AA,但我认为这不是正确的步骤。

1szpjjfi

1szpjjfi1#

使用列表解析将值转换为字典并传递给DataFrame构造函数:

df = pd.DataFrame({'col':[[['AA', 2], ['AB', 1], ['AC', 1]],
                          [['AA', 3], ['AC', 2], ['AE', 1]],
                          [['AB', 2], ['AC', 1], ['AD', 1]]]})
print (df)
                           col
0  [[AA, 2], [AB, 1], [AC, 1]]
1  [[AA, 3], [AC, 2], [AE, 1]]
2  [[AB, 2], [AC, 1], [AD, 1]]

df1 = pd.DataFrame([dict(x) for x in df['col']]).fillna(0)
    
print (df1)
    AA   AB  AC   AE   AD
0  2.0  1.0   1  0.0  0.0
1  3.0  0.0   2  1.0  0.0
2  0.0  2.0   1  0.0  1.0

相关问题