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

Pandas合并含同名列的DataFrame:如何同时按Country和Year合并

解决Pandas同时按两个同名列合并的问题

当然可以!你完全能通过pd.merge()同时按Country和Year这两个同名列完成合并,之前出现语法错误大概率是参数的格式写错了。

正确的写法(同名列场景)

如果两个DataFrame里的合并列名完全一致(都是Country和Year),只需要把这两个列名放到一个列表里,传给on参数就行:

merged = pd.merge(left=df, right=df1, on=['Country', 'Year'])

这样合并后,Country和Year只会保留一列,不会出现Year_x/Year_y或者Country_x/Country_y的后缀——因为它们是合并的依据键,Pandas会自动识别并保留一份。

为什么之前单独合并会出现后缀?

你之前只按Year或Country单个列合并时,另一个列(比如按Year合并时的Country)在两个DataFrame中都存在,Pandas无法区分,就会自动给它们加上_x(来自左表df)和_y(来自右表df1)的后缀来区分。

额外补充:列名不同的场景(如果以后需要)

万一哪天遇到两个表的合并列名不一样的情况(比如左表是Country,右表是Nation),可以分别用left_on和right_on传对应的列表:

merged = pd.merge(left=df, right=df1, left_on=['Country', 'Year'], right_on=['Nation', 'Year'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 17:07:40