如何使用query方法合并pandas DataFrame并应用类似SQL的where过滤条件
实现方案
你可以先基于Member_ID完成两个DataFrame的等值连接,再用query方法过滤符合时间条件的记录即可,完整实现代码如下:
# 第一步:按会员ID等值合并两个表 merged_df = Member_Timepoints.merge(Enrollment_Information, on="Member_ID", how="inner") # 第二步:用query方法应用时间过滤规则 result = merged_df.query( "Coverage_Effective_Date <= Discharge_Date and Coverage_Cancel_Date >= Discharge_Date + @pd.Timedelta(days=30)" )
逻辑说明
- 首先通过
merge方法将同一Member_ID的出院记录和参保记录全部配对,等效于SQL中from Member_Timepoints a join Enrollment_Information b on a.Member_ID = b.Member_ID的逻辑 query方法中的表达式完全对应你需要的过滤规则:Coverage_Effective_Date <= Discharge_Date对应参保生效日期早于等于出院日期Coverage_Cancel_Date >= Discharge_Date + @pd.Timedelta(days=30)对应参保取消日期晚于等于出院日期加30天- 表达式中
@符号用于引用query作用域之外的对象,这里用来调用pandas的Timedelta方法实现日期加30天的计算
直接打印result即可查看最终匹配后的结果。
内容的提问来源于stack exchange,提问作者user47
相关产品推荐
相关产品推荐

