У меня есть два кадра данных в пандах. Одним из них является 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