You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Pandas合并匹配数据时结果不符,请求解决方案

Pandas数据合并匹配的正确解法

你的代码存在两处关键错误,导致无法得到期望结果:

  • df2的匹配列是ID2,但你错误地使用了set_index('ID'),df2中不存在ID列
  • join的on参数指定了ID2,但df1里没有这个列,应该用df1的ID列作为匹配键

正确写法1:修正join用法

import pandas as pd

# 假设df1和df2已正确创建
result = df1.join(df2.set_index('ID2'), on='ID')

正确写法2:用merge方法(推荐,可读性更强)

merge是Pandas中更常用的合并方式,参数逻辑更直观:

import pandas as pd

result = pd.merge(df1, df2, left_on='ID', right_on='ID2', how='left').drop('ID2', axis=1)
  • how='left':强制保留df1的所有行,即使在df2中没有匹配项(满足你要保留无匹配数据的需求)
  • left_on='ID':指定df1用于匹配的列
  • right_on='ID2':指定df2用于匹配的列
  • drop('ID2', axis=1):删除合并后多余的ID2列,让结果结构和你的期望完全一致

两种方法都能得到目标结果:aa678的两行会匹配到santa fe,bb131的Box列留空,df1的所有行都被完整保留。

内容的提问来源于stack exchange,提问作者Lynn

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.18 03:05:11