在 DataFrame 中找到两个字符串列之间的相似性

6

我是新手程序员。我有一个pandas数据框,其中包含两个字符串列。

数据框如下:

Col-1             Col-2
Update            have a account
Account           account summary
AccountDTH        Cancel
Balance           Balance Summary
Credit Card       Update credit card

这里我需要检查Col-2元素与Col-1每个元素的相似性。也就是说,我需要将have a accountCol-1的所有元素进行比较。然后找到前3个最相似的元素。假设相似度得分为:Account(85),AccountDTH(80),Balance(60),Update(45),Credit Card(35)

期望输出结果为:

Col-2              Output
have a account     Account(85),AccountDTH(80),Balance(60)

你是如何生成分数的?这很令人困惑。你是否阅读了有关正确提问的帮助中心? - Rushabh Mehta
@ Rushabh Mehta,我不知道应该使用哪些相似性方法来获得这些分数。请指导我。 - PANDA
我不确定你想要什么,所以我无法提供太多帮助。 - Rushabh Mehta
1个回答

13

你可以在这里使用像fuzzywuzzy这样的Python库,它支持这种类型的任务:

from fuzzywuzzy import process

df.assign(Output=[process.extract(i, df['Col-1'], limit=3) for i in df['Col-2']])
使用process方法,可以获取字符串相似度分数,然后选择前 3 个(如果存在)。 上面代码的输出:
         Col-1               Col-2                                                         Output
0       Update      have a account       [(Account, 90, 1), (AccountDTH, 64, 2), (Update, 40, 0)]
1      Account     account summary  [(Account, 90, 1), (AccountDTH, 63, 2), (Credit Card, 38, 4)]
2   AccountDTH              Cancel      [(Balance, 62, 3), (Credit Card, 43, 4), (Update, 33, 0)]
3      Balance     Balance Summary      [(Balance, 90, 3), (Credit Card, 38, 4), (Update, 30, 0)]
4  Credit Card  Update credit card   [(Update, 90, 0), (Credit Card, 90, 4), (AccountDTH, 27, 2)]
为了加速这个比较过程(它原本使用Python的序列匹配器),我建议安装 python-Levenshtein

你好,请问我该如何使用python-Levenshtein实现相同的过程呢?我已经安装了这个库,但不知道如何使用它。抱歉,我是新手。非常感谢! - silentwraith

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接