на основе этой ссылки Я пытался выполнить нечеткий поиск: Применить нечеткое сопоставление к столбцу данных и сохранить результаты в новом столбце между 2 dfs:
import pandas as pd
df1 = pd.DataFrame(data={'Brand_var':['Johnny Walker','Guiness','Smirnoff','Vat 69','Tanqueray']})
df2 = pd.DataFrame(data={'Product':['J.Walker Blue Label 12 CC','J.Morgan Blue Walker','Giness blue 150 CC','tqry qiuyur qtre','v69 g nesscom ui123']})
У меня есть 2 dfs df1 и df2, которые необходимо отобразить с помощью нечеткого поиска / любого другого подходящего метода.
Ниже код, который я использую:
from fuzzywuzzy import fuzz
from fuzzywuzzy import process
compare = pd.MultiIndex.from_product([df1['Brand_var'],
df2['Product']]).to_series()
def metrics(tup):
return pd.Series([fuzz.ratio(*tup),
fuzz.token_sort_ratio(*tup)],
['ratio', 'token'])
compare.apply(metrics)
df = compare.apply(metrics).unstack().idxmax().unstack(0)
print(df)
Ниже мой вывод:
ratio token
----------------------------------------------------------
Giness blue 150 CC Guiness Guiness
J.Morgan Blue Walker Johnny Walker Johnny Walker
J.Walker Blue Label 12 CC Johnny Walker Johnny Walker
tqry qiuyur qtre Tanqueray Tanqueray
v69 g nesscom ui123 Guiness Guiness
Ожидаемый результат:
ratio token
----------------------------------------------------------
Giness blue 150 CC Guiness Guiness
J.Morgan Blue Walker None None
J.Walker Blue Label 12 CC Johnny Walker Johnny Walker
tqry qiuyur qtre Tanqueray Tanqueray
v69 g nesscom ui123 Vat 69 Vat 69
Любые предложения, что может быть лучшим подходом (без использования нечеткой вузи, также хорошо), чтобы получить желаемый результат?
Заранее спасибо. :)