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

Pandas中基于多列匹配实现两个DataFrame值映射的问题

解决方案

你可以通过两种常用方式实现三列等值匹配映射:

方法1:左连接实现(推荐,性能更高且不会打乱原df1的行顺序)

直接以PC1、PC2、PC3作为联合键执行左连接即可:

df1_new = df1.merge(
    df2[['PC1', 'PC2', 'PC3', 'K1']],
    on = ['PC1', 'PC2', 'PC3'],
    how = 'left'
).rename(columns={'K1': 'K1_mapped'})

方法2:多列组合映射(适配你原有map写法的逻辑)

把三列值打包为元组作为映射的键,构建映射字典后完成匹配:

# 先构建三列联合对应的K1映射字典
map_rule = df2.drop_duplicates(['PC1', 'PC2', 'PC3']).set_index(['PC1', 'PC2', 'PC3'])['K1'].to_dict()
# 对df1的每行做匹配
df1['K1_mapped'] = df1.apply(lambda row: map_rule.get((row['PC1'], row['PC2'], row['PC3'])), axis=1)

两种方法均会自动将匹配不到的行赋值为NaN,和你期望的输出结果完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 01:06:00