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

如何在pandas中对两个dataframe执行类似V-lookup的匹配操作

操作指引

第一步:完成DF2的聚合

按两个匹配列(Ethnicity、Region)同时分组求和,得到每个匹配组合对应的唯一总人口值,示例代码:

# 按两个匹配列分组,对Population求和
df2_agg = df2.groupby(['Ethnicity', 'Region'], as_index=False)['Population'].sum()

其中as_index=False参数可以让分组后的Ethnicity和Region保持为普通列,避免变成索引影响后续合并。

第二步:执行左连接合并

使用pandas的merge方法实现类VLOOKUP的匹配效果,保留DF1的所有行,匹配到的人口数据会自动填充到对应行:

# 左连接合并两个表
df1_final = pd.merge(
    left=df1,
    right=df2_agg,
    on=['Ethnicity', 'Region'], # 指定两个共同匹配列
    how='left' # 左连接,完全保留DF1的所有行
)

合并后DF1原有所有业务数据都会完整保留,仅新增Population列存储匹配到的人口数值,同一个Ethnicity+Region组合不管在DF1中出现多少次,都会自动填充对应聚合后的总人口值。

可选操作:处理空值

如果DF1中存在DF2没有的Ethnicity+Region组合,合并后对应的Population列会生成NaN空值,你可以根据需求填充默认值,比如填充为0:

df1_final['Population'] = df1_final['Population'].fillna(0)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 05:36:04