如何筛选每个PatientID含一条Admit和一条Discharge记录的数据?
解答
直接在当前分组校验阶段做更严谨的检查就够了,没必要先合并成单行。
你现在用的dfGrouped.groupby('PatientID').filter(lambda x: len(x) == 2)只能保证每个PatientID有2条记录,但没法确保这两条正好是一条“Admit”和一条“Discharge”——比如如果某个PatientID有两条“Admit”,这条代码还是会把它留下来,不符合你的规则。
更精准的校验可以这么写:
dfGrouped.groupby('PatientID').filter( lambda x: (x['记录类型'].eq('Admit').sum() == 1) and (x['记录类型'].eq('Discharge').sum() == 1) )
这里假设记录类型的列名叫记录类型,你可以根据实际列名替换。这段代码会直接过滤出那些恰好有1条Admit和1条Discharge的PatientID分组,一步到位,比先合并再检查更高效。
内容的提问来源于stack exchange,提问作者Vincent Valentine
相关产品推荐
相关产品推荐

