Оптимизация(ускорение): 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 минут в зависимости от количества строк.


Ответы (0 шт):