如何使用Pandas合并DataFrame按Location ID匹配填充Location列
Pandas实现按ID匹配填充字段的方法
你的需求是典型的左连接匹配场景,不需要复杂操作,3步就能完成,且能保证最终结果行数和原DF1完全一致:
- 预处理映射表DF2
DF2本身带有Date字段,直接合并会生成Date_x/Date_y的重名列,且你只需要DF2里的Location ID和Location两列做映射,先做裁剪+去重,避免合并后行数膨胀:# 只保留关联键和需要填充的字段,同ID去重 df2_map = DF2[['Location ID', 'Location']].drop_duplicates(subset='Location ID', keep='first') - 执行左连接合并
以DF1为左表,用Location ID作为关联键做左连接,会自动为DF1每一行匹配对应Location值,不会丢失DF1的任何行:result_df = DF1.merge(df2_map, on='Location ID', how='left') - 结果校验
合并完可以做两步简单校验,确认结果符合预期:# 校验行数是否和原DF1的12万行一致 assert len(result_df) == len(DF1), "合并后行数异常,请检查DF2是否有重复ID" # 统计未匹配到Location的行数,大于0说明DF2缺少对应ID的映射 missing_count = result_df['Location'].isna().sum() print(f"未匹配到地点的行数:{missing_count}")
常见匹配失败原因:两表的
Location ID格式不统一,比如一个是数字类型、一个是字符串类型,或者字符串前后带多余空格,遇到空值优先核对两表ID的格式一致性。
内容的提问来源于stack exchange,提问作者Lee Sugden
相关产品推荐
相关产品推荐

