Python 将DataFrame中的每个唯一值重塑为列
我有一个与此类似的数据帧:Python 将DataFrame中的每个唯一值重塑为列,python,pandas,Python,Pandas,我有一个与此类似的数据帧: 12 11 10 1 a b a 2 c c a 3 c b b 4 b a a 我想为DataFrame中的每个唯一值创建一列,并将这些列作为值,如: a b c 1 [12,10] [11] NaN 2 [10] NaN [12,11] 3 NaN [11,10] [12] 4 [11,10] [12] NaN
12 11 10
1 a b a
2 c c a
3 c b b
4 b a a
我想为DataFrame中的每个唯一值创建一列,并将这些列作为值,如:
a b c
1 [12,10] [11] NaN
2 [10] NaN [12,11]
3 NaN [11,10] [12]
4 [11,10] [12] NaN
您可以通过以下方式重塑,将多索引
转换为列,然后使用聚合列表
,最后通过以下方式删除索引和列名称:
或者将索引转换为列,以便它可以使用,然后使用与前面相同的步骤:
df1 = (df.reset_index()
.melt('index')
.groupby(['index','value'])['variable']
.apply(list)
.unstack()
.rename_axis(index=None, columns=None))
print (df1)
a b c
1 [12, 10] [11] NaN
2 [10] NaN [12, 11]
3 NaN [11, 10] [12]
4 [11, 10] [12] NaN
您可以通过以下方式重塑,将多索引
转换为列,然后使用聚合列表
,最后通过以下方式删除索引和列名称:
或者将索引转换为列,以便它可以使用,然后使用与前面相同的步骤:
df1 = (df.reset_index()
.melt('index')
.groupby(['index','value'])['variable']
.apply(list)
.unstack()
.rename_axis(index=None, columns=None))
print (df1)
a b c
1 [12, 10] [11] NaN
2 [10] NaN [12, 11]
3 NaN [11, 10] [12]
4 [11, 10] [12] NaN