如何通过双主键合并DataFrame,其中一个主键对应另一表的列名
实现方案
核心思路是先把宽格式存储的GDP数据转为长格式,再通过国家、年份两个字段和主表关联,2万行级别的数据量用该方案运算性能无压力。
步骤1:预处理GDP数据,宽表转长表
把原本作为列名的年份转为单独的字段,对应GDP值单独作为一列:
import pandas as pd # 宽表转长表 gdp_long = GDP_data.melt( id_vars=["Country Name"], var_name="Year", value_name="GDP" ) # 统一年份字段类型,保证和主表DF的Year列类型匹配 gdp_long["Year"] = gdp_long["Year"].astype(int) # 处理同一国家同一年的重复GDP记录,按需调整keep参数:'first'保留第一条,'last'保留最后一条 gdp_long = gdp_long.drop_duplicates(subset=["Country Name", "Year"], keep="last")
步骤2:关联两个表得到最终结果
result = DF.merge( gdp_long, left_on=["country", "Year"], right_on=["Country Name", "Year"], how="left" ) # 删除冗余的国家字段 result = result.drop(columns=["Country Name"])
结果说明
运行上述代码后得到的result表结构和你给出的预期输出完全一致,缺失匹配值的GDP字段会自动填充为NaN,你可以根据业务需要对空值做后续处理。
内容的提问来源于stack exchange,提问作者nivedan gowda
相关产品推荐
相关产品推荐

