Python - 根据 Levenshtein 距离将列表 A 中最接近的字符串分配给列表 B -(最好使用 pandas)
Python - Assign the closest string from List A to List B based on Levenshtein distance - (ideally with pandas)
作为介绍,我是python的新手,我只是知道如何使用pandas主要用于数据分析。
我目前有 2 个包含 100 多个条目的列表,"Keywords" 和 "Groups".
我想生成一个输出(最好是 pandas 中的数据帧),其中对于列表的每个条目 "Keywords",最接近的条目使用 levenshtein 距离 方法分配列表 "Groups"。
感谢您的支持!
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
是组的长度。
作为介绍,我是python的新手,我只是知道如何使用pandas主要用于数据分析。
我目前有 2 个包含 100 多个条目的列表,"Keywords" 和 "Groups".
我想生成一个输出(最好是 pandas 中的数据帧),其中对于列表的每个条目 "Keywords",最接近的条目使用 levenshtein 距离 方法分配列表 "Groups"。
感谢您的支持!
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
是组的长度。