Я пытаюсь объединить 2 кадра данных, используя fuzzy-wuzzy
. кадр данных df1
представляет собой таблицу с товарами для продажи (150 тыс. строк и 30 столбцов), а df2
— таблицу (30 тыс. строк и 10 столбцов) со справочными данными для названия товара («Defproduto
»). У меня нет справочных данных по предметам продажи, но я знаю, что некоторые из них имеют одни и те же справочные данные, хотя названия немного отличаются.
Пример: у меня есть справочные данные для товара aa_XXX_yy_RENT17_zzz_www_class
, но нет товара aa_XXX_yy_VER17_zzz_www_class
. Используя fuzzy-wuzzy
, я могу получить данные ссылки для aa_XXX_yy_RENT17_zzz_www_class
и назначить их в таблице продаж для всех товаров с именем aa_XXX_yy_VER17_zzz_www_class
.
Я использую следующий код:
import pandas as pd
df1 = pd.read_excel('/.../dummy_data_examples.xlsx', sheet_name='Sheet1')
df2 = pd.read_excel('/.../refdata_examples.xlsx', sheet_name='Sheet1')
df1['price'] = df1.apply(lambda row:df2.loc[process.extract(row.Defproduto,
df2['Defproduto'],limit=1,scorer=fuzz.ratio)[0][2],].price,axis=1)
Проблема: это ужасно медленно. Это занимает около 40 секунд только для выборки из 100 строк. Мне нужно обработать 150К (и нужно обновить 5 разных характеристик df1, а не только цену).
Есть ли более эффективный/быстрый процесс для этого? Я пробовал разные подходы к слиянию pandas, но ни один из них не смог получить нужные результаты.
заранее спасибо