【发布时间】:2020-02-15 11:10:23
【问题描述】:
我有两个数据框:df1、df2,每个数据框都包含一个带有名称的列。我将 df1 中的每个名称与 df2 中的每个名称进行比较。 这必须是近似匹配。我正在使用fuzzywuzzy token_sort_ratio 来获得比较分数。
但是这种方法非常慢并且 df2 不断增长,它已经花费了半个小时以上(4k x 2k 行)。 有没有办法加快这个过程?
我目前的实现:
def match(df2,name):
df2['score'] = df2['name'].map(lambda x: fuzz.token_sort_ratio(x, name))
return df2.loc[(df2['score'].idxmax())
df1['result']=df1['name'].map(lambda x: match(df2,x))
【问题讨论】:
标签: python pandas performance loops lambda