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

问题描述 投票:0回答:1

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

我目前有2个100多个条目的列表,“关键字”和“组”。

我想生成一个输出(理想情况下是pandas中的数据帧),其中对于列表“Keywords”的每个条目,使用levenshtein距离方法分配列表“Groups”的最近条目。

感谢您的支持!

python string python-3.x pandas levenshtein-distance
1个回答
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是组的长度。

© www.soinside.com 2019 - 2024. All rights reserved.