我有以下 Dataframe :
df =
patient_id diagnosis_code diagnosis_date medication_name medication_date
1 Diabetes 2014-08-05 A 2017-12-15
2 Diabetes 2019-06-07 A 2014-03-12
3 Diabetes 2015-06-18 B 2017-11-08
3 Heart Failure 2018-12-25 B 2017-11-08
4 Diabetes 2014-08-11 A 2017-07-07
我想创建与诊断和用药顺序对应的新列:
df_output =
patient_id State_1 State_2 State_3
1 Diabetes A NA
2 A Diabetes NA
3 Diabetes B Heart Failure
4 Diabetes A NA
理想情况下,每个patient_id都有一行,并且有多少个状态就有多少个观察结果。
1条答案
按热度按时间umuewwlo1#
如果尚未将
diagnosis_date
和medication_date
转换为pd.to_datetime
,则可以开始将它们转换为pd.to_datetime
。这在以后的步骤中按日期排序时会很有用。(诊断代码/日期或药物名称/日期),同时重命名列,以便concat
了解放置新行的位置。删除任何重复项,并按唯一保留日期的列排序,然后,按patient_id
分组。对于创建的每个组,您可以将to_list()
应用于现在包含诊断代码和药物名称的单列。按照上一步的apply(pd.Series)
,这样每个列表项都将被放置在单列中。最后一步,使用适当的名称重命名列。