仅当元素出现在字典中时才修改其名称

Modify the name of the elements only if they appear in the dictionary

让它成为下面的Python Pandas DataFrame.

ID region
12 FRA
99 GER
13 ESP
69 UK
17 GER
02 GER

使用下一个代码:

dictionary = {'GER': 'Germany', 'FRA': 'France'}
df['region'] = df['region'].map(dictionary)

我得到以下结果:

ID region
12 France
99 Germany
13 NaN
69 NaN
17 Germany
02 Germany

我的想法是,字典中没有出现的值,保留它们以前的值。

ID region
12 France
99 Germany
13 ESP
69 UK
17 Germany
02 Germany

我该怎么做?提前谢谢你。

使用fillna (or combine_first):

df['region'] = df['region'].map(dictionary).fillna(df['region'])

或利用 get 方法将值设置为默认值:

df['region'] = df['region'].map(lambda x: dictionary.get(x, x))

输出:

   ID   region
0  12   France
1  99  Germany
2  13      ESP
3  69       UK
4  17  Germany
5   2  Germany

我想你想要的是:

df.replace({"region": dictionary})