所以我有一列看起来像这样。
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
(我只是为分数输入随机值,因此它们不准确) 我在这里找不到这样的问题,因此,如果存在,请告诉我。
谢谢
答案 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的平均值都可以计算。这取决于您要完成的工作...