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

如何在不合并全部数据集的情况下使用df2的Index列?

问题与数据集

现有数据集

df1

国家年份Dem
土耳其1993152
西班牙1993223
西班牙1994166
美国1993123

df2(仅需使用其中的"Index"列)

国家年份Index
土耳其19930
西班牙19931
西班牙19941
美国19931

需求

如何在不合并全部数据集的情况下使用df2中的Index列?


解决方案

以下几种方法都不需要合并df2的全部列,仅提取需要的Index值关联到df1中:

方法1:构建映射字典快速匹配

先把df2的(国家,年份)作为键、Index作为值生成字典,再直接在df1中映射取值:

import pandas as pd

# 假设df1和df2已加载完成
index_map = df2.set_index(['国家', '年份'])['Index'].to_dict()

# 给df1添加Index列(也可以直接用这个字典做后续计算)
df1['Index'] = df1.apply(lambda row: index_map.get((row['国家'], row['年份'])), axis=1)

方法2:仅合并所需列的轻量merge

用merge但只传入df2的必要列,避免全量合并:

# 只选取df2中关联需要的列,和df1合并
df1_with_index = df1.merge(df2[['国家', '年份', 'Index']], on=['国家', '年份'], how='left')

方法3:按条件查询提取(适合小数据集)

如果数据量不大,直接通过条件定位df2中的对应Index值:

df1['Index'] = df1.apply(
    lambda row: df2.loc[(df2['国家'] == row['国家']) & (df2['年份'] == row['年份']), 'Index'].iloc[0],
    axis=1
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:31:05