【问题标题】:Apply fuzzy matching score at two columns of a dataframe在数据框的两列应用模糊匹配分数
【发布时间】:2018-11-29 07:59:18
【问题描述】:

我有数据框:

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

非常感谢您的帮助。 谢谢

【问题讨论】:

    标签: python fuzzywuzzy


    【解决方案1】:

    您可以使用Dataframes apply()函数如下:

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

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

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

    【讨论】:

      猜你喜欢
      • 2019-04-05
      • 1970-01-01
      • 2019-02-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-30
      • 2021-01-26
      相关资源
      最近更新 更多