Python按前缀重新组合字符串

2024-06-30 16:51:44 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个带有公司名称列的数据集,我必须在公司组中重新组合它们。 例如: 戴尔英国、戴尔法国、戴尔美国=>;戴尔集团 数据不干净,有些单元格可能包含点或错拼等错误。你知道吗

我尝试了一些类似模糊比较的方法,但有时组前缀很小,比如3M group,名称的结尾也比较长。你知道吗

你有我的歌吗?你知道吗

谢谢你,对不起我的英语

数据:

import pandas as pd
from fuzzywuzzy import fuzz
import pprint
import re

df = pd.read_csv("data2.csv", nrows=100)
l =  list(df["SUPPLIER_NAME"])
#print(df["SUPPLIER_NAME"])
liste = []
for i in range(len(l)):
    liste2 = []
    liste2.append(l[i])
    for j in range(len(l)):
        if i!=j:
            if fuzz.partial_ratio(l[i], l[j])>60:
                liste2.append(l[j])
    liste.append(liste2)

pprint.pprint(liste)
SUPPLIER_NAME
Dell France
Dell UK
Del US
3M Italy
3M COMPANY
3M SCIENCE
3.M SPAIN
3 M 
MCDONALDS France
MC DONALDS COMPANY
MCDONALD'S INC.

输出:

[['Dell France', 'Dell UK', 'Del US', 'MCDONALDS France'],
 ['Dell UK', 'Dell France', 'Del US'],
 ['Del US', 'Dell France', 'Dell UK'],
 ['3M Italy', '3 M '],
 ['3M COMPANY', '3.M SPAIN', '3 M ', 'MC DONALDS COMPANY'],
 ['3M SCIENCE', '3.M SPAIN', '3 M '],
 ['3.M SPAIN', '3M COMPANY', '3M SCIENCE', '3 M '],
 ['3 M ', '3M Italy', '3M COMPANY', '3M SCIENCE', '3.M SPAIN'],
 ['MCDONALDS France', 'Dell France', 'MC DONALDS COMPANY', "MCDONALD'S INC."],
 ['MC DONALDS COMPANY', '3M COMPANY', 'MCDONALDS France', "MCDONALD'S INC."],
 ["MCDONALD'S INC.", 'MCDONALDS France', 'MC DONALDS COMPANY']]

Tags: importmccompanydellincscienceusdel
1条回答
网友
1楼 · 发布于 2024-06-30 16:51:44

1。预处理

从基本的清理开始,即删除特殊字符/标点符号、降低大小写等,以实现基本的规范化。在这里,你可以使用简单的字符串函数,比如replace,lower,等等。找到here一个关于预处理的中型博客,供你参考。你知道吗

2。计数分析

提取使用计数频率更正单词,即如果单词出现的频率超过某个特定的频率/百分比,则将其添加到正确的单词列表中。你知道吗

(您可以在前两个步骤之间迭代以优化预处理并获得适当的列表)

三。拼写检查

下一步可以使用自定义词典来应用拼写检查,即使用步骤2中的列表作为拼写检查算法的基础。python中的拼写检查算法有多种选择,例如symspellpyspellchecker

第四条。模糊匹配

对每个名字进行迭代,从公司列表中找出最佳模糊匹配(在步骤2中实现)。fuzzy-wuzzy是这里可以使用的最好的python实现。你知道吗

相关问题 更多 >