Привет, я новичок в python и pandas
У меня есть два DataFrames: один на более высокий таймфрейм с ежедневной детализацией и один на более низкий таймфрейм с ежечасной детализацией. То, что я хочу сделать, это добавить данные "тренд" с более раннего таймфрейма к более низкому временному кадру, где день тот же. У меня проблемы. Мои DataFrames имеют индекс datetime и выглядят примерно так:
Более высокий временной интервал:
time state
2015-06-03 22:00:00 bullish
2015-06-04 22:00:00 bullish
2015-06-05 22:00:00 bearish
2015-06-06 22:00:00 bullish
2015-06-07 22:00:00 bullish
2015-06-08 22:00:00 bullish
Нижний временной интервал:
time state
2015-06-05 05:00:00 bullish
2015-06-05 09:00:00 bullish
2015-06-05 13:00:00 bullish
2015-06-05 17:00:00 bullish
2015-06-07 21:00:00 bullish
2015-06-08 01:00:00 bullish
И мой желаемый результат будет выглядеть так:
time state trend
2015-06-05 05:00:00 bullish bearish
2015-06-05 09:00:00 bullish bearish
2015-06-05 13:00:00 bullish bearish
2015-06-05 17:00:00 bullish bearish
2015-06-07 21:00:00 bullish bullish
2015-06-08 01:00:00 bullish bullish
Любая помощь очень ценится !!
Использовать merge_asof
:
d = {'state_x':'state','state_y':'trend'}
df = pd.merge_asof(df2, df1, on='time', direction='forward').rename(columns=d)
print (df)
time state trend
0 2015-06-05 05:00:00 bullish bearish
1 2015-06-05 09:00:00 bullish bearish
2 2015-06-05 13:00:00 bullish bearish
3 2015-06-05 17:00:00 bullish bearish
4 2015-06-07 21:00:00 bullish bullish
5 2015-06-08 01:00:00 bullish bullish