【发布时间】:2019-10-02 17:34:20
【问题描述】:
我有一个关于患者及其就诊次数的数据框。患者可能会在某些就诊时服用药物,并且只记录初始剂量,或在剂量改变时记录。如果下次就诊时剂量没有变化,记录的是“药物进行中?是。剂量改变了?否”。我需要得到的是每次访问的确切剂量。
我尝试使用 groupby (groupby patient_id) 进行前向填充,但我被困在如何插入仅在药物正在进行且剂量不变时填充缺失的条件。
df = pd.DataFrame({'patient_id': ['a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'c'], \
'visit_number':[1, 2, 3, 2, 3, 4, 10, 11, 12], \
'drug_ongoing':[np.nan, 1, 1, np.nan, 0, 1, 1, 1, 0], \
'drug_dose_changed':[0, 0, 0, 0, np.nan,0, 0, 1, np.nan], \
'dose':[40, np.nan, np.nan, 60, np.nan, 70, 80, np.nan, np.nan]})
我试过了:
df['dose_filled'] = df.groupby('patient_id')['dose'].ffill()
但是这样一来,所有的缺失都被填补了。
所需的新列'dose_filled' 是[40, 40, 40, 60, np.nan, 70, 80, np.nan, np.nan]
【问题讨论】:
标签: python pandas dataframe pandas-groupby missing-data