У меня есть фрейм данных pandas с двумя столбцами, оба являются экземплярами даты и времени. Первый столбец состоит из временных интервалов измерения, а второй столбец представляет собой сумму первого столбца с постоянным смещением. Например, если предположить, что постоянное смещение равно 1, это дает:
| показатель | Время_измерения | offset_time |
|---|---|---|
| 0 | 0,1 | 1,2 |
| 1 | 0,5 | 1,5 |
| 2 | 1,2 | 2.2 |
| 3 | 2,4 | 3.4 |
Я хотел бы найти индекс каждого измерения_времени, которое ближе всего соответствует смещению_времени, с условием, что измерение_время должно быть меньше или равно смещению_времени. Таким образом, решение данного примера будет таким:
индекс = [2, 2, 2, 3]
Я пытался использовать get_loc и создать маску, но поскольку мой фрейм данных большой, эти решения слишком неэффективны.
Любая помощь будет принята с благодарностью!






Давайте используем np.searchsorted, чтобы найти индексы ближайших совпадений.
s = df['Measurement_time'].sort_values()
np.searchsorted(s, df['offset_time'], side='right') - 1
Результат:
array([2, 2, 2, 3], dtype=int64)
Примечание. Вы можете пропустить часть .sort_values, если ваш фрейм данных уже отсортирован по столбцу Measurement_time