Pandas 水平轴

Pandas horizontal pivot

我有 table 诊断 icd_code 和患者 subject_id,如下面的屏幕截图所示。

Screenshot

一个病人可以有多个诊断。我想安排 table 使得 subject_id 是索引,并在单独的列中水平包含该患者的所有诊断的列表。有什么办法可以用 pandas 做到这一点吗?另外,如何统计每位患者有多少次诊断?

谢谢并致以最诚挚的问候

试试 groupbypivot:

df["idx"] = df.groupby("subject_id").cumcount()+1
output = df.pivot("subject_id", "idx", "icd_code")
output["Count"] = output.count(axis=1)

>>> output
idx             1      2     3      4      5  Count
subject_id                                         
11442057    65971  64231  V270  64511    NaN      4
15734973     2825  V0251  V270  64891  66481      5