我在pandas中有一个数据集,列为pid(患者ID)和代码(药物代码),如示例所示按行排序。我需要将它们转换为1个患者/行,并列出所有药物作为每个患者的属性。

我现在所拥有的:

pid  code
1    Az
1    Bn
2    Az
2    Bn
2    C4
3    Bn
3    C4
3    Dx
4    Az
4    Bn
4    Dx
4    E
5    C4
5    Dx
5    E


我需要将其转换为:

pid  Az   Bn   C4   Dx   E
1    y    y    n    n    n
2    y    y    y    n    n
3    n    y    y    y    n
4    y    y    n    y    y
5    n    n    y    y    y

最佳答案

IIUC crosstab

pd.crosstab(df.pid,df.code).replace({1:'y',0:'n'})
Out[231]:
code Az Bn C4 Dx  E
pid
1     y  y  n  n  n
2     y  y  y  n  n
3     n  y  y  y  n
4     y  y  n  y  y
5     n  n  y  y  y

10-04 17:04