
[英]How to make a dataframe of 0 and 1 such that each unique value is a column?
[英]Reshape each unique value in DataFrame to column
我有一个与此类似的 DataFrame:
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
您可以通过DataFrame.stack
重塑,将MultiIndex
转换为列,然后使用Series.unstack
聚合list
,最后通过DataFrame.rename_axis
删除索引和列名称:
df1 = (df.stack()
.reset_index(name='v')
.groupby(['level_0','v'])['level_1']
.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
或者将索引转换为列,因此可以通过它使用DataFrame.melt
然后使用与以前相同的步骤:
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
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.