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

如何匹配两个Pandas DataFrame字符串列并迁移对应数据?

解决Pandas DataFrame按列匹配添加新列的问题

推荐方案:使用merge左连接

这是最直观且容错性高的实现方式,直接基于Info1列做左连接,自动填充匹配值,未匹配项用NaN填充:

# 只保留df2中需要的列,避免引入多余数据
df1 = df1.merge(df2[['Info1', 'Info3']], on='Info1', how='left')

修正你尝试的map方法

你之前的map代码失效,大概率是两个原因:

  1. dict(df2.values)的键值顺序错误——如果df2的列顺序不是Info1在前,生成的字典键会是Info3的值,自然匹配不到;
  2. 两个DataFrame的Info1列存在隐藏空格、大小写不一致等字符串不匹配的情况。

修正后的map写法:

# 先构造以Info1为键、Info3为值的映射字典
info_mapping = df2.set_index('Info1')['Info3'].to_dict()
# 映射到df1的Info1列
df1['Info3'] = df1['Info1'].map(info_mapping)

如果是字符串格式问题导致的匹配失败,先做清洗:

# 去除字符串两端的空白字符
df1['Info1'] = df1['Info1'].str.strip()
df2['Info1'] = df2['Info1'].str.strip()

# 若存在大小写差异,统一格式(按需使用)
# df1['Info1'] = df1['Info1'].str.upper()
# df2['Info1'] = df2['Info1'].str.upper()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 03:43:11