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