Как добавить данные из другого DataFrame, где совпадают различные детализации дат?

1

Привет, я новичок в 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

Любая помощь очень ценится !!

Теги:
pandas
dataframe
date

1 ответ

1
Лучший ответ

Использовать 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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню