Как сделать эту операцию поиска данных быстрее? - PullRequest
0 голосов
/ 06 октября 2019

У меня есть два кадра данных в пандах. Одним из них является testdata, а другой refdata. Оба кадра данных имеют столбец с именем «отметка времени». как это:

timestamp
197888.000,
197888.100,
197888.200,
197888.300,
197888.400,
...

Я хочу найти правильный индекс справочных данных из refdata для каждой строки тестовых данных. Для этого я использую метод apply.

index = testdata.apply(lambda x: locate_refindex(x.timestamp, refdata, threshold), axis=1) 

в функции locate_refindex, ключевым алгоритмом является следующий оператор:

def locate_refindex(timestamp, refdata, threshold):
    ...
    slice_data = refdata[abs(refdata['timestamp'] - timestamp) <= threshold]
    ...

, который находит ближайшую строку refdata(s) к данным испытаний. например, если у меня есть строка тестовых данных с отметкой времени 197888.100, порог 0.099, тогда данные slice_data должны состоять из двух элементов.

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

Интересно, есть ли другие способы сделать это быстрее. Большое спасибо.

-Stefan

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