Python - 根据Levenshtein距离将最接近的字符串从列表A分配给列表B - (理想情况下是使用pandas)

时间:2017-12-20 14:54:27

标签: python string python-3.x pandas levenshtein-distance

作为介绍,我对python很新,我只知道如何使用pandas主要用于数据分析。

我目前有2个100多个条目的列表,"关键字" "群组"

我想生成一个输出(理想情况下是pandas中的数据框),其中列表的每个条目"关键字" ,列表中最近的条目使用 levenshtein距离方法分配"群组"

感谢您的支持!

1 个答案:

答案 0 :(得分:1)

from editdistance import eval as levenshtein
import pandas as pd

keywords = ["foo", "foe", "bar", "baz"]
groups = ["foo", "bar"]

assigned_groups = [min(groups, key=lambda g: levenshtein(g, k))
                   for k in keywords]

df = pd.DataFrame({"Keyword": keywords, "Group": assigned_groups})
#   Group Keyword
# 0   foo     foo
# 1   foo     foe
# 2   bar     bar
# 3   bar     baz

使用editdistance。通过pip install editdistance获取它。

请注意,此算法为O(mn),其中m为关键字的长度,n为组的长度。