繁体   English   中英

在数据框的两列上应用模糊匹配得分

[英]Apply fuzzy matching score at two columns of a dataframe

我有数据框:

df =
    original_title                     title
      Mexico Oil                    Gas Summit
      Mexico Oil                    Gas Summit

我必须模糊匹配这两个(original_title&title)列的实体并获得一个分数。 下面是我的代码:

compare = pd.MultiIndex.from_product([ df['original_title'],df ['title'] ]). to_series()
def metrics (tup):
    return pd.Series([fuzz.partial_ratio(*tup),fuzz.token_sort_ratio(*tup)], ['partial', 'token'])

compare.apply(metrics)

上面的代码将每个原始标题与标题的整个列进行比较。 同时,我希望它可以将每个原始标题与每一行中的标题进行比较。 我的预期结果将是:

df =
 original_title                    title                 partial_ratio
 Mexico Oil                      Africa Oil                   81
 French Property Exhibition      French                      100
 French Exhibition               French Exhibition           100

感谢您的帮助。 谢谢

您可以按以下方式使用Dataframeapply()函数:

df['partial_ratio'] = df.apply(lambda x: fuzz.partial_ratio(x['original_title'], x['title']), axis=1)

这给出了我认为您想要的结果(尽管数字略有不同):

...    partial_ratio
...    78
...    83
...    100
...    100
...    100

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM