我有一个像这样的数据框:

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()

10-08 08:06