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

如何基于国家名称和年份高效合并两个Pandas DataFrame?

解决DataFrame基于国家与年份的合并问题

问题场景

需要合并两个DataFrame:

  • df_GDP:包含国家名称、国家代码、年份、GDP值(rgdpe列)
  • df_biofuel_prod:包含国家名称、生物燃料产量(value列)、年份

要求基于国家名称+年份匹配,最终结果保留列:Country、Country code、year、rgdpe、value

当前代码的错误点

你写的代码存在三个核心问题:

  1. 仅提取了df_GDP的rgdpe列,直接丢失了国家、国家代码、年份等关键信息
  2. 关联键完全错误:left_on='Value'(df_biofuel_prod无此列,正确列名是countries),right_on='country'(df_GDP列名是Country,且你只传了rgdpe列,根本没有该字段)
  3. 合并方向逻辑混乱,导致结果仅保留rgdpe列,其余为空

正确合并代码

import pandas as pd

# 基于国家名称+年份的组合键进行合并
combined = pd.merge(
    left=df_GDP,
    right=df_biofuel_prod,
    left_on=['Country', 'year'],  # df_GDP的匹配键
    right_on=['countries', 'year'],  # df_biofuel_prod的匹配键
    how='inner'  # 仅保留两边都匹配上的数据;若要保留GDP表全部数据,改为how='left'
)

# 整理为预期的列结构,移除重复的countries列
combined = combined[['Country', 'Country code', 'year', 'rgdpe', 'value']]

# 导出到CSV(添加index=False避免导出多余的索引列)
combined.to_csv('../../combined_test.csv', index=False)

代码说明

  • 使用组合键(国家+年份)匹配,确保同一国家同一年的GDP和产量数据准确对应
  • 保留df_GDP的所有必要列,不会丢失国家代码等信息
  • 通过how参数控制合并逻辑:
    • inner:只保留两边都有匹配数据的行(适合需要完整匹配的场景)
    • left:保留df_GDP的所有行,无匹配产量的行填充NaN(适合需要完整GDP数据的场景)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 07:45:48