pandas - 标准化公司名称
问题描述
我有一份公司名称列表,但这些名称有拼写错误和变体。我怎样才能最好地解决这个问题,以便每家公司都有一致的命名约定(对于以后groupby
的 ,sort_value
等)?
pd.DataFrame({'Company': ['Disney','Dinsey', 'Walt Disney','General Motors','General Motor','GM','GE','General Electric','J.P. Morgan','JP Morgan']})
解决方案
一个很好的提示: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)
现在您只需创建一个包含“正确名称”的列表并针对它运行所有变体,这样您就可以选择最佳比率并在数据集上替换它。
推荐阅读
- apache-camel - camel spring ws - 从类型转换期间出错:java.io.ByteArrayInputStream
- typescript - NestJS + NuxtJS(在 TypeScript 中)
- python - itertools.permutations 是否总是返回一个排序的对象?
- javascript - 来自 Google 地方信息的图片需要刷新页面
- java - 找不到“org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder”类型的 bean
- c - 字符数组长度函数为 1、2、3、ENTER 返回 5,但其他方面看起来很好
- vba - 使用 Excel VBA 从当前 Internet Explorer 浏览器会话下载 PDF?
- python - 使用正则表达式匹配使用netstat -nb python的进程的IP地址
- sql - 如果找到重复行,则选择结果附加来自另一个字段的数据
- c++ - 在 C++ 硬件分配上遇到问题。初学者