使用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
相关产品推荐
相关产品推荐

