我有以下panda数据帧:
ID value
0 1 A
1 1 B
2 1 C
3 2 B
4 10 C
5 4 C
6 4 A
我想为列"value"中的值和列"ID"中的每个值制作伪变量。所以我想要这个:
ID A B C
0 1 1 1 1
1 2 0 1 0
2 10 0 0 1
3 4 1 0 1
我如何在python中做到这一点?
使用crosstab
,通过DataFrame.clip
:将计数限制为1
df1 = (pd.crosstab(df['ID'], df['value'])
.clip(upper=1)
.reset_index()
.rename_axis(None, axis=1))
print (df1)
ID A B C
0 1 1 1 1
1 2 0 1 0
2 4 1 0 1
3 10 0 0 1