Python中合并两个数据集:内连接后数据重复问题求助
问题原因与解决方案
问题根源
你遇到的重复行问题,本质是连接键不完整导致的笛卡尔积:
- TFC_DATA删除year列后,每个国家只有1条TFP记录(无年份维度)
- CO2_DATA每个国家有多条分年份的记录(有年份维度)
当仅用country做连接键时,CO2里每个国家的每一条年份数据,都会和TFC里该国家的唯一TFP记录匹配一次,自然会产生大量重复行。
解决步骤
恢复TFC_DATA的year列
TFP指标必然是和年份对应的,你之前删除year列是错误操作,必须找回这个字段(从原始数据集重新读取,或恢复之前的备份版本)。恢复后TFC_DATA应该包含Country(或country)、year、TFP三列。统一列名大小写
注意你的两个数据集里国家列的大小写不一致(一个是Country,一个是country),这会导致连接失败,先统一列名:
# 统一列名为小写(或大写,保持一致即可) TFC_DATA.rename(columns={'Country': 'country', 'TFP': 'tfp'}, inplace=True) CO2_DATA.rename(columns={'Country': 'country'}, inplace=True)
- 使用多键内连接
同时用country和year作为连接键,这样就能保证每个国家的对应年份数据精准匹配:
inner_merged = pd.merge(TFC_DATA, CO2_DATA, how="inner", on=["country", "year"])
额外验证
如果恢复year列后,发现部分国家的TFP数据年份和CO2的年份不匹配,内连接会自动只保留两者共有的country+year组合,完全符合你“仅保留共有的国家数据(且对应年份)”的需求。
内容的提问来源于stack exchange,提问作者Pelin Kasap
相关产品推荐
相关产品推荐

