Python DataFrame:使用字典替换值,如果字典中不存在则转换为NaN

8

我知道如何使用字典替换列值,但我想将所有不在我的字典中的值转换为NaN或其他值。我得到了这个:

Dictionary is:
{'apple': 1, 'peach': 6, 'watermelon': 4, 'grapes': 5, 'orange': 2, 
'banana': 3}

DataFrame is: 
fruit_tag
apple
orange
banana
watermelon
red
blue

I use: 
df["fruit_tag"].replace(dict, inplace=True)
print(df)

I get:
fruit_tag
1
2
3
4
red
blue

What I want to get:
fruit_tag
1
2
3
4
NaN
NaN
1个回答

19

使用 map 方法:

d = {'apple': 1, 'peach': 6, 'watermelon': 4, 'grapes': 5, 'orange': 2,'banana': 3}

df["fruit_tag"] = df["fruit_tag"].map(d)
print (df)
   fruit_tag
0        1.0
1        2.0
2        3.0
3        4.0
4        NaN
5        NaN

map和replace有什么区别? - Indrajeet Gour
4
如果使用 map 函数进行翻译,当某些分类数据缺失时,结果会返回 NaN 值。而如果使用 replace 函数,则分类数据仍会保留原值,就像最后两行示例中的情况一样。 - jezrael

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接