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

使用Pandas map函数时如何保留未指定映射的索引对应值

Pandas中map函数替换值时保留未匹配项的方法

当用map()传入字典对列值做替换时,字典中没有的键对应的元素会被自动转为NaN,这就是你看到其他名字变成空值的原因。要保留未指定映射的原有值,有两种简单方法:

方法一:使用replace()函数(推荐)

replace()是Pandas专门用于值替换的函数,默认会保留未匹配的原数值,不需要额外处理:

import pandas as pd

# 构造原始DataFrame
data = {
    'name': ['Anastasia', 'Dima', 'Katherine', 'James', 'Emily'],
    'score': [12.5, 9.0, 16.5, pd.NA, 9.0],
    'attempts': [1, 3, 2, 3, 2],
    'qualify': ['yes', 'no', 'yes', 'no', 'no']
}
dff = pd.DataFrame(data, index=['a', 'b', 'c', 'd', 'e'])

# 定义映射规则
codes = {'James':'99','Emily':'99'}
# 使用replace替换
dff['name'] = dff['name'].replace(codes)
print(dff)

执行后结果:

name  score  attempts qualify
a    Anastasia   12.5         1     yes
b         Dima    9.0         3      no
c    Katherine   16.5         2     yes
d           99    NaN         3      no
e           99    9.0         2      no

方法二:map()结合fillna()

如果一定要用map(),可以先完成指定值的映射,再用原列的值填充生成的NaN:

codes = {'James':'99','Emily':'99'}
dff['name'] = dff['name'].map(codes).fillna(dff['name'])

这个方法先通过map()替换目标值,再用fillna()把未匹配的空值补回原来的名字,最终效果和replace()一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 18:20:32