如何匹配两个Pandas DataFrame字符串列并迁移对应数据?
解决Pandas DataFrame按列匹配添加新列的问题
推荐方案:使用merge左连接
这是最直观且容错性高的实现方式,直接基于Info1列做左连接,自动填充匹配值,未匹配项用NaN填充:
# 只保留df2中需要的列,避免引入多余数据 df1 = df1.merge(df2[['Info1', 'Info3']], on='Info1', how='left')
修正你尝试的map方法
你之前的map代码失效,大概率是两个原因:
dict(df2.values)的键值顺序错误——如果df2的列顺序不是Info1在前,生成的字典键会是Info3的值,自然匹配不到;- 两个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
相关产品推荐
相关产品推荐

