У меня есть фрейм данных пациента, и образец выглядит следующим образом.
pat_id дата лекарства lag_date lag_grace_dte
1234 A 1 января-17 1 января-1711 января 17
1234 A 11 января 17 17 января 17 11 января 17
1234 A 26 января 17 11 января 17 26 января 17
1234 A5 февраля 17 26 января 17 15 февраля 17
Пример данных и требуемый вывод и вывод должен быть основан на идентификаторе пациента, дате и lag_grace_dateстолбцы.
Ниже приведен бизнес-критерий.Я пытаюсь создать алгоритм накапливания для пациента
Если пациент «1234» принимал препарат «А» в период с 01.01.2017 по «январь-01-2017», то его следующая дата посещения (дата) должна быть включена'Jan-21-2017'.это должно быть проверено с lag_grace_dte согласно ниже.Если его следующая дата меньше даты lag_grace, то мы должны изменить столбец даты как lag_grace_dte +1 для этого пациента в этой строке.
if date < lag_grace_dte then lag_grace_dte+1 end as mod_date
вывод выглядит следующим образом:
pat_id drug date lag_grace_dte mod_date
1234 A 1-Jan-17 11-Jan-17 1-Jan-17
1234 A 11-Jan-17 11-Jan-17 12-Jan-17
1234 A 26-Jan-17 26-Jan-17 26-Jan-17
1234 A 5-Feb-17 15-Feb-17 5-Feb-17
Заранее спасибо.
Ниже приведен код, который я пытаюсь, но он дает мне столбец даты в качестве вывода без каких-либо изменений.Я новичок в Python, пожалуйста, предложите мне это.
from datetime import date, timedelta
day = timedelta(days = 1)
for a,b,c,d in zip(drugs.pat_id,drugs.date, drugs.lag_date,drugs.lag_grace_dte):
if b==c:
adj_dte = drugs.date
elif b<d:
adj_dte = drugs.lag_grace_dte+day
elif b>d:
adj_dte = drugs.date
print(adj_dte)
break
Вывод вышеуказанного кода:
mod_date
1-Jan-1711 января 17 26 января 17 5 февраля 17