У меня есть фрейм данных о пациентах и их посещениях клиники. Пациенты могут принимать лекарство при некоторых посещениях, и записывается только начальная доза или при изменении дозы. Если доза не изменится при следующем посещении, что записывается как «препарат продолжается? Да. Доза изменилась? Нет». Мне нужна точная доза для каждого визита.
Я пытался заполнить группу вперед с помощью 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]