我有以下数据框:
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 限制计数到 1 通过 DataFrame.clip :
crosstab
1
DataFrame.clip
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