【发布时间】:2021-10-22 00:50:06
【问题描述】:
我有一个数据框,其中一列包含公司名称(数据框大约有 50 列)。例如
Name
byname_tt
standing_re
mystandying_tz
mouse_x
mousepad_db
我正在尝试再创建一列,其中包含来自已检查名称的相似名称列表。为了比较我正在使用的名称,fuzzywuzzy。
def check_name(name):
check = df.apply(lambda row: ((fuzz.partial_ratio(row['Name'], name)) >= 50), axis=1)
return [df.Name[i] for i, x in enumerate(check) if x]
如果匹配高于阈值,我的预期输出应该类似于
Name Checked
byname_tt []
standing_re ['mystandying_tz']
mystandying_tz ['standing_re']
mouse_x ['mousepad_db']
mousepad_db ['mouse_x']
目前,我的输出是错误的:
Name Checked
byname_tt ['byname_tt']
standing_re ['standing_re']
mystandying_tz ['mystandying_tz']
mouse_x ['mouse_x']
mousepad_db ['mousepad_db']
对于名称中的每个名称,我应该检查与名称列中其他名称的相似性。 知道出了什么问题吗?
【问题讨论】:
-
这里检查的名称是什么?您是否将所有公司名称与所有其他公司名称进行核对?
标签: python pandas string-matching fuzzy-search fuzzywuzzy