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

合并数据集后regime列拆分为regime_x和regime_y的原因是什么?

合并后regime列分裂为regime_x/regime_y的原因及解决办法

原因分析

  • 你的合并代码中,左右表都包含regime列,且你通过left_on和right_on分别将其指定为连接键之一。由于pandas默认会保留两个表中名称相同的列(哪怕是连接键),并通过_x(左表)和_y(右表)后缀区分,因此出现了分裂的列。
  • 这里无法直接用on参数统一指定连接键,因为其他键的列名大小写不一致:左表是country、year,右表是Country、Year,pandas会将它们视为不同列。

解决办法

方法1:合并后清理列

合并完成后删除多余列,并将保留列改回原名:

# 删除右表的regime_y列
output1.drop('regime_y', axis=1, inplace=True)
# 将regime_x重命名为regime
output1.rename(columns={'regime_x': 'regime'}, inplace=True)

方法2:合并时指定后缀再清理

通过suffixes参数设置其中一个后缀为空,后续删除多余列:

output1 = classen_gravity.merge(fdi, how="left", 
                                right_on=["Country", "Year", "regime"],
                                left_on=["country", "regime", "year"],
                                suffixes=('', '_drop'))
# 删除带_drop后缀的冗余列
output1.drop('regime_drop', axis=1, inplace=True)

方法3:先重命名列再统一键合并

先将右表的列名调整为与左表一致,再用on参数指定共同连接键,合并后自动保留单一regime列:

# 复制右表并重命名列(避免修改原数据)
fdi_renamed = fdi.copy().rename(columns={'Country': 'country', 'Year': 'year'})
# 使用统一键合并
output1 = classen_gravity.merge(fdi_renamed, how="left", 
                                on=["country", "year", "regime"])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 01:50:25