python - 将fuzzywuzzy过程提取结果附加到df中
问题描述
我有一份未正确对齐的公司名称列表。数据集看起来像
df[Name]= [Google, google, Google.inc, Google Inc., Google.com]
我有大约 500,000 行,应该以最好的方式更正名称。
我的代码如下所示:
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
import pandas as pd
get_match = []
for row in df.index:
name1= df.get_value(row,"Name")
for columns in df2.index:
name2=df2.get_value(columns,"Name")
matched_token=[process.extract(x, name2, limit=3) for x in name1]
get_match.append([matched_token, name1, name2])
df_maneet = pd.DataFrame({'Ratio': [i[0] for i in get_match], 'name1': [i[1] for i in get_match], 'name2':[i[2] for i in get_match]})
我在matched_token中的结果是
[[('google', 100, 0), ('Sxyzdgg.', 48, 9), ('ggigsk', 45, 2)]]
但我想将结果附加到 df 并查看如下结果。
我认为我在matched.token 行中运行了一些错误,但无法弄清楚。
提前致谢
解决方案
也许这段代码会帮助你:
import pandas as pd
df = pd.DataFrame({"Name" : ["Google","google.inc"]})
df2 = pd.DataFrame({"Name" : ["google","google"]})
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
get_match = []
for row in df.index:
name1 = []
name1.append(df.get_value(row,"Name"))
for columns in df2.index:
name2 = []
name2.append(df2.get_value(columns,"Name") )
matched_token=[process.extract(x, name2, limit=3)[0][1] for x in name1]
get_match.append([matched_token, name1[0], name2[0]])
df_maneet = pd.DataFrame({'name1': [i[1] for i in get_match], 'name2':[i[2] for i in get_match], 'Ratio': [i[0][0] for i in get_match]})
最终数据框:
name1 name2 Ratio
0 谷歌谷歌 100
1 谷歌谷歌 100
2 google.inc 谷歌 90
3 google.inc 谷歌 90
推荐阅读
- java - ZXing 无法在 Vuzix M300 上运行,但可以在三星 S9 上运行
- sql - 将访问查询附加到 Excel 工作表
- java - OpenSaml 无法在 Java 11 中解码 x509 证书
- anylogic - Anylogic中资源池之间如何交换资源?
- html - flex-wrap: nowrap 宽度不包括孩子
- jquery-selectors - Puppeteer - 计算 DOM 中的元素
- netbeans - Netbeans 无法列出文件原因:227 进入被动模式
- javascript - JavaScript 如何比较日期字符串?
- jenkins - 如何在从管道共享库继承的声明性 jenkins 管道中定义其他参数?
- php - SSL 证书问题:无法获取颁发者证书