Python中基于匹配值将两个独立DataFrame合并到大DataFrame的方法
多DataFrame匹配合并解决方案
你可以分两次左连接完成合并,全程保留df1的所有行,匹配时直接指定不同表的对应关联键即可,无需提前修改原表字段:
实现代码
import pandas as pd # 第一步:df1左连接df2,匹配规则:id=name、Date=date1 merge_tmp = df1.merge( df2, left_on=["id", "Date"], right_on=["name", "date1"], how="left" ) # 第二步:上述临时结果左连接df3,匹配规则:id=ex、Date=date2 res = merge_tmp.merge( df3, left_on=["id", "Date"], right_on=["ex", "date2"], how="left" ) # 字段重命名+空值填充,符合期望输出格式 res = res.rename(columns={"pp1": "pwr1", "pp2": "pwr2"}) fill_cols = ["count1", "pwr1", "count2", "pwr2"] res[fill_cols] = res[fill_cols].fillna(0).astype(int) # 输出结果 print(res)
逻辑说明
- 两次合并均使用
how="left",保证df1的所有行被完整保留,不会因df2、df3无匹配项丢失数据 - 匹配时通过
left_on、right_on分别指定左右表的关联键,无需修改原表的字段名称 - 最后对数值列的空值统一填充为0,和你给出的期望输出完全一致
内容的提问来源于stack exchange,提问作者Lynn
相关产品推荐
相关产品推荐

