Это в основном зависит от ваших правил! Как это сделать, чтобы объединить их? Вы также можете сделать кластер брендов, хранить их и передавать их, как ваши продукты!

ываясь на этой ссылке, я пытался сделать нечеткий поиск:Примените нечеткое сопоставление к столбцу данных и сохраните результаты в новом столбце. между 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

Любые предложения, что может быть лучшим подходом (не использовать нечеткие wuzzy тоже хорошо), чтобы получить желаемый результат?

Заранее спасибо. :)

Ответы на вопрос(1)

Ваш ответ на вопрос