Python';地图';函数插入NaN,是否可以返回原始值?
我正在向Python';地图';函数插入NaN,是否可以返回原始值?,python,pandas,map-function,Python,Pandas,Map Function,我正在向map函数传递一个字典,以重新编码数据帧列中的值。但是,我注意到,如果原始序列中有一个值没有显式地出现在字典中,它将被重新编码为NaN。下面是一个简单的例子: 打字 s = pd.Series(['one','two','three','four']) …创建系列 0 one 1 two 2 three 3 four dtype: object 0 A 1 B 2 C 3 NaN dtype: object 但是
map
函数传递一个字典,以重新编码数据帧列中的值。但是,我注意到,如果原始序列中有一个值没有显式地出现在字典中,它将被重新编码为NaN
。下面是一个简单的例子:
打字
s = pd.Series(['one','two','three','four'])
…创建系列
0 one
1 two
2 three
3 four
dtype: object
0 A
1 B
2 C
3 NaN
dtype: object
但是应用地图
recodes = {'one':'A', 'two':'B', 'three':'C'}
s.map(recodes)
…返回序列
0 one
1 two
2 three
3 four
dtype: object
0 A
1 B
2 C
3 NaN
dtype: object
如果系列s
中的任何元素不在recodes
字典中,我希望它保持不变。也就是说,我更愿意返回下面的系列(使用原始的four
而不是NaN
)
是否有一种简单的方法可以做到这一点,例如传递到map
函数的选项?我面临的挑战是,我不能总是预测我正在重新编码的序列中所有可能的值-数据将在将来更新,并且可能出现新的值
谢谢 使用而不是映射
:
>>> s = pd.Series(['one','two','three','four'])
>>> recodes = {'one':'A', 'two':'B', 'three':'C'}
>>> s.map(recodes)
0 A
1 B
2 C
3 NaN
dtype: object
>>> s.replace(recodes)
0 A
1 B
2 C
3 four
dtype: object
您没有为
four
创建词典条目。