我有一个长格式的pandas数据帧(10M+行),其中每一行包括一个医院就诊和一个相应的诊断,任何患者都可能有几次就诊。你知道吗
我想创建一个新的专栏,总结该患者以前获得的所有独特诊断。你知道吗
创建一个包含列表的新列是很简单的,该列表总结了任何时候授予的所有诊断,但这不适合我。你知道吗
What I tried so far:
df.groupby( ["Patient_ID"] )["Diagnosis"].unique().to_frame(name = "all_diagnoses").reset_index()
Patient_ID all_diagnoses
2 [R104]
3 [O820, K429]
4 [R319, R339, N409, C619]
5 [J189, K578]
10 [C619, S202, R410]
Desired output:
Visit_ID Patient_ID ARRIVAL Diagnosis Newcol
52591 2 2/1/12 14:30 R104 [R104]
78131 3 4/26/12 7:00 O820 [O820]
78132 3 3/7/13 8:00 K429 [O820, K429]
61204 4 1/4/13 0:05 R319 [R319]
61202 4 1/10/13 15:00 R339 [R319, R339]
61205 4 4/23/13 10:00 N409 [R319, R339, N409]
61203 4 5/9/13 10:30 R319 [R319, R339, N409]
61206 4 5/30/13 3:40 C619 [R319, R339, N409, C619]
54263 5 3/28/12 23:10 J189 [J189]
54262 5 4/7/12 23:55 K578 [J189, K578]
111804 10 1/10/11 9:00 C619 [C619]
111803 10 5/16/12 20:00 S202 [C619, S202]
111805 10 7/18/12 14:30 R410 [C619, S202, R410]
82785 10 5/17/13 17:50 R410 [C619, S202, R410]
68737 10 11/28/13 10:30 R410 [C619, S202, R410]
This is not what I want:
Visit_ID Patient_ID ARRIVAL Diagnosis Newcol
52591 2 2/1/12 14:30 R104 [R104]
78131 3 4/26/12 7:00 O820 [O820, K429]
78132 3 3/7/13 8:00 K429 [O820, K429]
61204 4 1/4/13 0:05 R319 [R319, R339, N409, C619]
61202 4 1/10/13 15:00 R339 [R319, R339, N409, C619]
61205 4 4/23/13 10:00 N409 [R319, R339, N409, C619]
61203 4 5/9/13 10:30 R319 [R319, R339, N409, C619]
61206 4 5/30/13 3:40 C619 [R319, R339, N409, C619]
54263 5 3/28/12 23:10 J189 [J189, K578]
54262 5 4/7/12 23:55 K578 [J189, K578]
111804 10 1/10/11 9:00 C619 [C619, S202, R410]
111803 10 5/16/12 20:00 S202 [C619, S202, R410]
111805 10 7/18/12 14:30 R410 [C619, S202, R410]
82785 10 5/17/13 17:50 R410 [C619, S202, R410]
68737 10 11/28/13 10:30 R410 [C619, S202, R410]
这应该能奏效
解释
我们执行groupby,然后在数据帧中转换序列。你知道吗
然后将原始数据帧与新数据帧合并
how = left
意味着我们将依赖左数据帧的键(这将是左数据帧的“患者ID”)。请记住,我们添加到原始数据帧,所以我们希望这个数据帧(左)是参考点。你知道吗left_on
是要用作合并的左数据帧索引键的列right_index
因为我们使用的是右数据帧的索引(grouped by dataframe)相关问题 更多 >
编程相关推荐