我有一个患者数据框,样本看起来像这样。
pat_id 药物日期 lag_date lag_grace_dte
1234 A 1-Jan-17 1-Jan-17 11-Jan-17
1234 A 11-Jan-17 1-Jan-17 1-Jan-17
1234 A 26-Jan-17 11-Jan-17 26-Jan- 17
1234 A 2017 年 2 月 5 日 17 年 1 月 26 日 17 年 2 月 15 日
样本数据和所需的输出 和输出应基于患者 ID、日期和 lag_grace_date 列。
以下是业务标准。我正在尝试为患者建立一个储存算法
如果患者“1234”在“2017 年 1 月 1 日”服用了“A”药物 20 天,那么他的下一次就诊日期(日期)应该是“2017 年 1 月 21 日”。这应该根据以下内容与 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
2017 年 1 月 1 日 17 年 1 月 11 日 17 年 1 月 26 日 2017 年 2 月 5 日