Объединить два кадра данных по ближайшему, но более низкому индексу - PullRequest
0 голосов
/ 06 октября 2018

У меня есть два кадра данных 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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...