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

如何基于匹配条件在Pandas的不同DataFrame间映射对应值

Pandas两表匹配编码对应姓名解决方案

原代码报错原因

  • on 参数错误传入了列表变量 codes1,而非DataFrame的列名,且两个待匹配表的关联列命名不一致(df1为codes1,df2为codes2),无法直接通过on参数指定关联字段
  • 关联方式错误选择了outer外连接,会额外保留df2独有的行,不符合保留全部df1行的需求

推荐实现方法

方法1:merge实现(适合常规规模数据集)

# 分别指定左右表的关联列,用左连接保留df1全部行
res = df1.merge(df2, left_on='codes1', right_on='codes2', how='left')
# 移除冗余的codes2列,空值替换为空字符串
res = res.drop(columns=['codes2']).fillna('')

方法2:map映射实现(更适合超大数据集,性能更高)

将df2转换为编码-姓名的映射字典后直接匹配,无需做表连接运算,内存占用和运算速度都远优于merge,适合超大数据场景:

# 生成编码到姓名的映射字典
code_map = df2.set_index('codes2')['names'].to_dict()
# 对df1的编码列做映射,空值填充为空字符串
df1['names'] = df1['codes1'].map(code_map).fillna('')

运行后df1就是你需要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 21:24:02