Примените нечеткое совпадение в двух столбцах данных - PullRequest
0 голосов
/ 29 ноября 2018

У меня есть фрейм данных:

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

Буду признателен за вашу помощь.Спасибо

1 Ответ

0 голосов
/ 29 ноября 2018

Вы можете использовать функцию 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
...