Pandas 水平轴
Pandas horizontal pivot
我有 table 诊断 icd_code
和患者 subject_id
,如下面的屏幕截图所示。
Screenshot
一个病人可以有多个诊断。我想安排 table 使得 subject_id
是索引,并在单独的列中水平包含该患者的所有诊断的列表。有什么办法可以用 pandas 做到这一点吗?另外,如何统计每位患者有多少次诊断?
谢谢并致以最诚挚的问候
试试 groupby
和 pivot
:
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
我有 table 诊断 icd_code
和患者 subject_id
,如下面的屏幕截图所示。
Screenshot
一个病人可以有多个诊断。我想安排 table 使得 subject_id
是索引,并在单独的列中水平包含该患者的所有诊断的列表。有什么办法可以用 pandas 做到这一点吗?另外,如何统计每位患者有多少次诊断?
谢谢并致以最诚挚的问候
试试 groupby
和 pivot
:
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