我有一个excel文件,在一列中包含1000多个公司名称,在另一列中包含大约20,000个公司名称.
目标是尽可能多地匹配名称.问题是第一列(1000+)中的名称格式不正确,这意味着"公司名称"字符串看起来像"9Com(panynAm9e00").我正试图找出解决此问题的最佳方法.(仅12个名字完全匹配)
在尝试了不同的方法后,我最终试图在每个名称中匹配4-5个或更多字符,具体取决于每个字符串的长度,使用正则表达式.但我只是在努力寻找最有效的方法来做到这一点.
例如:
第1栏
1. 9Com(panynAm9e00
2. NikE4
3. Mitrosof2
Run Code Online (Sandbox Code Playgroud)
第2栏
1. Microsoft
2. Company Name
3. Nike
Run Code Online (Sandbox Code Playgroud)
获取第1列中的第一个元素并在第2列中查找匹配项.如果没有完全匹配,则查找具有4-5个相同字符的字符串.
有什么建议?
我建议用pandas和读取你的Excel文件pd.read_excel(),然后fuzzywuzzy用来执行匹配,例如:
import pandas as pd
from fuzzywuzzy import process, fuzz
df = pd.DataFrame([['9Com(panynAm9e00'],
['NikE4'],
['Mitrosof2']],
columns=['Name'])
known_list = ['Microsoft','Company Name','Nike']
def find_match(x):
match = process.extractOne(x, known_list, scorer=fuzz.partial_token_sort_ratio)[0]
return match
df['match found'] = [find_match(row) for row in df['Name']]
Run Code Online (Sandbox Code Playgroud)
产量:
Name match found
0 9Com(panynAm9e00 Company Name
1 NikE4 Nike
2 Mitrosof2 Microsoft
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
224 次 |
| 最近记录: |