在数据框的两列应用模糊匹配分数
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
感谢您的帮助。
谢谢
您可以使用Dataframe
s 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
我有数据框:
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
感谢您的帮助。 谢谢
您可以使用Dataframe
s 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