У меня есть два кадра данных df_aux
и df_sgl
.Последний индексируется каждые 100 миллисекунд.
df_aux.head()
Out[57]:
0
Time
2017-09-05 09:30:00.570 0.0
2017-09-05 09:30:05.234 400.0
2017-09-05 09:30:05.235 200.0
2017-09-05 09:30:05.256 100.0
2017-09-05 09:30:20.585 1795.0
df_sgl.head()
Out[58]:
OBV
Time
2017-09-05 09:30:00.100 NaN
2017-09-05 09:30:00.200 NaN
2017-09-05 09:30:00.300 NaN
2017-09-05 09:30:00.400 NaN
2017-09-05 09:30:00.500 NaN
Я хочу выполнить правильное объединение индекса так, чтобы преобладал df_sgl
, а каждое значение df_aux
назначалось на ближайший, но более высокий момент.Например, первое заменяемое значение будет
2017-09-05 09:30:00.600 0.0
, а второе будет
2017-09-05 09:30:05.300 400.0
Я пытался использовать merge_asof
, но значения не сохранились.
Спасибо.
Нашел следующее решение, но я все еще открыт для более простого.
df_aux['groupid'] = df_sgl.index[[ df_sgl.index.searchsorted(t) for t in df_aux.index ]]
df_aux = df_aux.groupby(by=['groupid']).sum()
df_sgl.merge(df_aux, how = 'left', left_index = True, right_index = True)