Оптимизация(ускорение): Pandas, Apply
Подскажите пожалуйста, есть возможность ускорить функцию pandas apply или выполнить решение по другому.
Есть DataFrame(25 000 строк) - df, который содержит наименование номенклатуры и Series(800 строк) - Group данные. Необходимо выполнить сравнение на совпадение данных при помощи Fuzzywuzzy, df('Nomenclatura') и Series(Groups), создать новый столбец с названием группа.
Пример: Таблица - Nomenclatura содержит наименование: Натрий фосфат Натрий азид Натрий гидроокись Соответственно группа будет Натрий.
Мое решение:
def func1(f):
dct = {}
for ch in Group['Groups']:
if fuzz.WRatio(f, ch) >= 70:
dct[ch] = fuzz.WRatio(f, ch)
return dct
df['ProductGroup'] = df['Nomenclatura'].apply(func1)
PS: Словарь создаю, т.к. fuzz может не все данные подтянуть корректно, для проверки информации.
Результат необходим такой:
Данное решение занимает очень большое количество времени от 5 до 10 минут в зависимости от количества строк.