如何在索引列重复时将 Panda 的列转换为索引和 header

How to convert Panda's columns into an index and a header when index column has duplicates

我想转换一个数据帧,df,类似于这个:

PIDM            | COURSE          | GRADE
1               | MAT1            | B
1               | PHY2            | C
2               | MAT1            | A
2               | MAT2            | B
2               | PHE2            | A

格式如下:

PIDM     |  MAT1      | PHY2    |  MAT2  | PHY 2  
1        |    B       |    C    |  NaN   |   NaN
2        |    A       |    NaN  |  B     |   A

我假设我可以做类似的事情:

df2 = df.pivot(index='PIDM', columns=‘COURSE’, values = ‘GRADE)

但我收到一条错误消息,指出我有重复的索引。感谢您的帮助。

您可以将 pivot_table 与聚合函数一起使用 join:

df2 = df.pivot_table(index='PIDM', columns='COURSE', values = 'GRADE', aggfunc=', '.join)
print (df2)
COURSE MAT1  MAT2  PHE2  PHY2
PIDM                         
1         B  None  None     C
2         A     B     A  None