使用 pandas 和 fuzzwuzzy 匹配相似的列元素

我有一个 excel 文件,其中一列包含 1000 多个公司名称,另一列包含大约 20,000 个公司名称。


目标是匹配尽可能多的名称。问题是第一列(1000+)中的名称格式不正确,这意味着“公司名称”字符串可能类似于“9Com(panynAm9e00”。我正在尝试找出解决此问题的最佳方法。(仅12 个名字完全匹配)


在尝试了不同的方法后,我最终尝试使用正则表达式匹配每个名称中的 4-5 个或更多字符,具体取决于每个字符串的长度。但我只是在努力寻找最有效的方法来做到这一点。


例如:


第 1 栏


 1. 9Com(panynAm9e00 

 2. NikE4 

 3. Mitrosof2

第 2 栏


 1. Microsoft

 2. Company Name

 3. Nike

取第1 列中的第一个元素并在第 2 列中查找匹配项。如果没有完全匹配,则查找具有 4-5 个相同字符的字符串。


有什么建议么?


慕勒3428872
浏览 192回答 2
2回答

SMILET

我想数字在实际公司名称中并不是很常见,因此初始过滤步骤将极大地帮助前进,但这里有一个实现,即使没有这个也应该可以相对良好地工作。一个信袋(bag-of-words)方法,如果你愿意:将所有内容(第 1 列和第 2 列)转换为小写对于第 2 列中的每个已知公司,存储每个唯一字母以及它在字典中出现的次数(计数)对第 1 列中的每个条目执行相同操作(步骤 2)对于第 1 列中的每个条目,从真实公司名称列表中找到最接近的信袋(步骤 2 中的字典)字典距离的实现取决于你。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python