我有一个csv数据集,如下所示
访视ID|访视日期|识别号|诊断|小组|总成至SP|
1.零零一|2021年1月1日|千零一|牛皮癣|面板总成
- 002|二○二一年二月一日|小行星1002|背痛、关节痛|面板总成
1.零零三|二○二一年二月一日|1003|发热|面板总成 - 004| 2021年4月1日|千零一|牛皮癣|样本组SP
- 005| 2021年8月1日|1004年|接缝漆|面板总成
1.零零六|2021年9月1日|小行星1005|接缝漆|面板总成 - 007| 2021年10月1日|小行星1002|背痛|样本组SP
我需要为SP分配一个新值GP,表示从普通诊所到Maven的随访。首先,我将按ID号和日期对数据集进行排序。然后,我如何将每行与具有相同ID号的其他行进行比较,以便我可以确定是否有任何行具有相同的诊断(Maven),是哪一行的前一行(ID相同,但访视日期更早,小组GP)
- 编辑
定义GP至SP(g):return((g ['诊断'] == g ['诊断'].shift())&(g ['面板'] == '面板SP')&(g ['面板'].shift()== '面板GP'))
newdf = df.赋值(gp_to_sp=df.分组依据(“散列NRIC”).应用(gp_to_sp).删除级别(0))
此代码正常工作,但使用此代码时,ID为(1002)的患者的GP至SP将为假,尽管它应该为真,因为诊断不完全匹配,因为他仅因GP中的一种诊断(背痛)而访问SP。
另外,是否可以分配新的GP_referral列,记录导致GP_to_SP True条件的访视ID?例如,第4行将具有GP_referral值(001)
1条答案
按热度按时间8fq7wneg1#
编辑修改后的问题现在每行可能有多个诊断。在这种情况下,我们希望在此列的第一个
explode()
。此外,要求初始Visit ID
。因此,我们可以简化,当没有转诊时,只有referral_id
,即NaN
,或当转诊为“GP to SP”时,只有初始就诊ID。让我们从一个可重现的示例开始:
现在: