如何使用字典映射进行值校正?

时间:2019-04-25 08:54:41

标签: python pandas

我有一个熊猫系列,其唯一值类似于:

['toyota', 'toyouta', 'vokswagen', 'volkswagen,' 'vw', 'volvo']

现在,我想修复其中的一些值,例如: 丰田->丰田

(请注意,并非所有值都有诸如沃尔沃,丰田等错误)

我试图制作一个字典,其中key是正确的单词,value是要更正的单词,然后将其映射到我的系列中。

这是我的代码的样子:

corrections = {'maxda': 'mazda', 'porcshce': 'porsche', 'toyota': 'toyouta', 'vokswagen': 'vw', 'volkswagen': 'vw'}
df.brands = df.brands.map(corrections)

print(df.brands.unique())
>>> [nan, 'mazda', 'porsche', 'toyouta', 'vw']

如您所见,问题在于这种方式会将字典中不存在的所有值自动转换为nan。一种解决方案是将所有正确的值映射到它们自己,但是我希望可以有一种更好的方法来解决此问题。

1 个答案:

答案 0 :(得分:3)

使用:

df.brands = df.brands.map(corrections).fillna(df.brands)

或者:

df.brands = df.brands.map(lambda x: corrections.get(x, x))

或者:

df.brands = df.brands.replace(corrections)