我有一个像这样的数据框:
df = pd.DataFrame({"id":[1, 1, 1, 2, 2, 2, 2, 3, 3], "val":["A12", "B23", "C34", "A12", "C34", "E45", "F56", "G67", "B23"]})
print(df)
id val
0 1 A12
1 1 B23
2 1 C34
3 2 A12
4 2 C34
5 2 E45
6 2 F56
7 3 G67
8 3 B23
如何将其转换为如下形式?
id A12 B23 C34 E45 F56 G67
0 1 1 1 1 0 0 0
1 2 1 0 1 1 1 0
2 3 0 1 0 0 0 1
我尝试了数据透 View 和unstack,但由于每个“id”的“val”列中的值数目可能不同,因此无法创建主列列表,然后以某种方式填充这些列中的值。请帮忙。
最佳答案
尝试交叉表:
pd.crosstab(df.id, df.val).reset_index()