Skip to main content
 首页 » 编程设计

python之如何将行值转换为 Pandas 中的属性(列)

2025年05月04日13mayingbao

我在 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 交叉表

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