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

使用字典映射DataFrame列值失败:.map()与.replace()均无效求助

解决DataFrame映射字典失败的问题

问题分析

你遇到的映射失败(出现NaN或无变化),大概率是字符串首尾存在空白字符(空格、制表符等),导致df2的Original Currency列值和字典di的键无法匹配;另外,直接用zip生成字典时,若df1的Currency列有重复值,虽当前数据重复值对应Code相同不会影响,但用更稳妥的方式生成字典能避免潜在问题。

解决步骤

1. 清理字符串空白

先对两个DataFrame的对应列做首尾空白清理:

# 清理df1中Currency列的首尾空白
df1['Currency'] = df1['Currency'].str.strip()
# 清理df2中Original Currency列的首尾空白
df2['Original Currency'] = df2['Original Currency'].str.strip()

2. 生成可靠的映射字典

避免重复键干扰(即使当前数据重复值对应结果相同,也建议用这种方式):

# 去重后将Currency设为索引,转换为字典
di = df1.drop_duplicates(subset='Currency').set_index('Currency')['Code'].to_dict()

3. 执行映射操作

推荐新增一列存储映射结果(保留原列更稳妥):

# 使用map映射
df2['Currency Code'] = df2['Original Currency'].map(di)

# 或者使用replace替换原列(按需选择)
df2['Original Currency'] = df2['Original Currency'].replace(di)

4. 排查未匹配值

如果还有NaN,检查哪些值未匹配到:

unmatched_values = df2[~df2['Original Currency'].isin(di.keys())]['Original Currency'].unique()
print("未匹配的货币值:", unmatched_values)

根据输出结果去df1补充对应映射关系,或修正df2的异常值。


内容的提问来源于stack exchange,提问作者Nick D'Agostino

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 06:45:46