Самый быстрый способ сделать нечеткое сопоставление двух строк в кадре данных панд
У меня есть два фрейма данных со списком имен
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, чтобы ускорить его. Панды не используют многоядерные по умолчанию.