首页 > 解决方案 > 标准化公司名称

问题描述

我有一份公司名称列表,但这些名称有拼写错误和变体。我怎样才能最好地解决这个问题,以便每家公司都有一致的命名约定(对于以后groupby的 ,sort_value等)?

pd.DataFrame({'Company': ['Disney','Dinsey', 'Walt Disney','General Motors','General Motor','GM','GE','General Electric','J.P. Morgan','JP Morgan']})

标签: pandasgroup-byfuzzywuzzy

解决方案


一个很好的提示:FuzzyWuzzy 库。“像老板一样的模糊字符串匹配。它使用 Levenshtein Distance 来计算序列之间的差异,在一个简单易用的包中。” 例子:

from fuzzywuzzy import process
from fuzzywuzzy import fuzz    

str2Match = "apple inc"
strOptions = ["Apple Inc.","apple park","apple incorporated"]
Ratios = process.extract(str2Match,strOptions)
print(Ratios)
# You can also select the string with the highest matching percentage
highest = process.extractOne(str2Match,strOptions)
print(highest)

输出:

[('Apple Inc.', 100), ('apple incorporated', 90), ('apple park', 67)]
('Apple Inc.', 100)

现在您只需创建一个包含“正确名称”的列表并针对它运行所有变体,这样您就可以选择最佳比率并在数据集上替换它。


推荐阅读