将模糊模糊过程提取结果附加到df中

时间:2018-11-05 13:49:17

标签: python pandas fuzzywuzzy

我有一个未正确对齐的公司名称列表。 数据集看起来像

  

df [名称] = [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]})

我的结果 match_token是

  

[[((google',100,0),('Sxyzdgg。,48,9),('ggigsk',45,2)]]

但是我想将结果附加到df中,然后看到如下所示的结果。

enter image description here

我认为我在match.token行中出现了问题,但无法弄清。

预先感谢

1 个答案:

答案 0 :(得分:1)

也许这段代码可以帮助您:

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 Google google 100
 1个Google google 100
 2 google.inc google 90
 3 google.inc google 90