3列之间的Fuzzywuzzy字符串匹配

时间:2018-07-23 20:00:30

标签: python pandas nltk fuzzywuzzy

所以我有一列看起来像这样。

name      col1            col2                      col3 
company1  Banking         Finance                   B&F
company2  Utilities       Utilities                 NaN
company3  Transportation  Pipeline Transportation   Utilities
company4  Consulting      Tech                      Insurance

有没有一种方法,我可以在col1,col2和col3之间进行模糊匹配,并用得分分配一个新列。我在熊猫中使用Fuzzywuzzy。

输出应如下所示

name      col1            col2                      col3           Score 
company1  Banking         Finance                   B&F             23 
company2  Utilities       Utilities                 NaN             71
company3  Transportation  Pipeline Transportation   Utilities       54
company4  Consulting      Tech                      Insurance        2

(我只是为分数输入随机值,因此它们不准确) 我在这里找不到这样的问题,因此,如果存在,请告诉我。

谢谢

2 个答案:

答案 0 :(得分:0)

我不知道您的用例是否对[dict(zip(lst1, l)) for l in lst2] 比率函数有意义,我见过的所有示例都使用两个字符串而不是三个字符串来生成相似性评分(我自己没有使用过)。

但是假设这确实有意义,只需将分数分配到数据框中的新列即可,这是一些伪代码(您的数据框在此处称为fuzzywuzzy):

df

答案 1 :(得分:0)

使用

df['score_1_2'] = df[['col1', 'col2']].apply(lambda row: fuzz.ratio(row['col1'], row['col2']), axis=1) 

如果要计算第1列和第2列的得分,则对所有有意义的列对1-2、2-3、1-3的平均值都可以计算。这取决于您要完成的工作...