Самый быстрый способ сделать нечеткое сопоставление двух строк в кадре данных панд

У меня есть два фрейма данных со списком имен

df1[name]   -> number of rows 3000

df2[name]   -> number of rows 64000

Я использую fuzzy wuzzy, чтобы получить лучшее совпадение для записей df1 из df2, используя следующий код:

from fuzzywuzzy import fuzz
from fuzzywuzzy import process

matches = [process.extract(x, df1, limit=1) for x in df2]

Но это займет вечность, чтобы закончить. Есть ли более быстрый способ сделать нечеткое соответствие строк в пандах?

2 ответа

Решение

Одним из улучшений, которое я вижу в вашем коде, является использование генератора, поэтому вместо квадратных скобок вы можете использовать круглые скобки. это увеличит скорость в несколько раз.

matches = (process.extract(x, df1, limit=1) for x in df2)

Вы можете использовать пакет многопоточности Python, чтобы ускорить его. Панды не используют многоядерные по умолчанию.

Другие вопросы по тегам