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

s90*_*00n 7 python replace dataframe pandas

我了解如何使用字典替换列值,但是我想将字典中没有的所有值转换为 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
Run Code Online (Sandbox Code Playgroud)

jez*_*ael 13

使用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
Run Code Online (Sandbox Code Playgroud)

  • @IndrajeetGour - 不同之处在于缺失值。如果使用 `map` 并且缺少某些类别,则获取 `NaN`。如果使用`replace`,类别将保持不变,就像最后两行的问题一样。 (2认同)