将模糊比率应用于两个数据帧

Apply fuzzy ratio to two dataframes

我有两个数据帧,其中 我想模糊字符串比较并将我的函数应用于两个数据帧:

sample1 = pd.DataFrame(data1.sample(n=200, random_state=42))
sample2 = pd.DataFrame(data2.sample(n=200, random_state=13))

def get_ratio(row):
    sample1 = row['address']
    sample2 = row['address']
    return fuzz.token_set_ratio(sample1, sample2)
match = data[data.apply(get_ratio, axis=1) >= 78] #I want to apply get_ratio to both sample1 and sample2
no_matched = data[data.apply(get_ratio, axis=1) <= 77] #I want to apply get_ratio to both sample1 and sample2

在此先感谢您的帮助!

您需要创建地址的排列组合。然后用它来比较匹配的。你可以找一个类似的问题.

对于您的情况,您首先需要创建排列:

combs = list(itertools.product(data1["address"], data2["address"]))
combs = pd.DataFrame(combs)

然后使用正确的方法进行匹配:

combs['score'] = combs.apply(lambda x: fuzz.token_set_ratio(x[0],x[1]), axis=1)

现在根据分数可以找到匹配或不匹配的。

我建议您首先尝试对地址进行分组和清理(即,降低大小写,删除重复项)否则可能需要很长时间才能计算。