Быстрый поиск между двумя столбцами данных - Python / Pandas Way - PullRequest
0 голосов
/ 22 февраля 2019

У меня есть два фрейма данных, каждый из которых имеет около 250K строк.Я пытаюсь сделать нечеткий поиск между столбцами двух фреймов данных.После поиска мне нужны индексы для тех хороших совпадений с порогом.

Ниже приведены некоторые детали,

Мой df1:

   Name     State      Zip        combined_1
0  Auto     MN            10      Auto,MN,10 
1  Rtla     VI           253      Rtla,VI,253  
2  Huka     CO         56218      Huka,CO,56218
3  kann     PR           214      Kann,PR,214
4  Himm     NJ         65216      Himm,NJ,65216
5  Elko     NY         65418      Elko,NY,65418
6  Tasm     MA            13      Tasm,MA,13
7  Hspt     OH         43218      Hspt,OH,43218

Мой другой фрейм данныхчто я пытаюсь посмотреть на

   Name     State      Zip        combined_2
0  Kilo     NC         69521      Kilo,NC,69521 
1  Kjhl     FL          3369      Kjhl,FL,3369
2  Rtla     VI         25301      Rtla,VI,25301
3  Illt     GA         30024      Illt,GA,30024
4  Huka     CO         56218      Huka,CO,56218
5  Haja     OH         96766      Haja,OH,96766
6  Auto     MN           010      Auto,MN,010
7  Clps     TX         44155      Clps,TX,44155

Если вы присмотритесь, когда я сделаю нечеткий поиск, я получу хорошее совпадение для индексов 0 и 2 в моих df1 из df2 indexes, 6,4.

Итак, я сделал это,

from fuzzywuzzy import fuzz
# Save df1 index
df_1index = []

# save df2 index
df2_indexes = []

# save fuzzy ratio
fazz_rat = []

for index, details in enumerate(df1['combined_1']):
    for ind, information in enumerate(df2['combined_2']):
        fuzmatch = fuzz.ratio(str(details), str(information))
        if fuzmatch >= 94:
            df_1index.append(index)
            df2_indexes.append(ind)
            fazz_rat.append(fuzmatch)

        else:
            pass

Как я и ожидал, я получаю результаты для этого примера,

df_1index
>> [0,2]

df2_indexes
>> [6,4]

Для запуска с 250K* 250 тыс. Строк в обоих фреймах данных занимает столько времени.

Как я могу ускорить этот процесс поиска?Есть ли способ панда или Python для улучшения производительности для чего хотите?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...