如何从日期粒度不同的另一个DataFrame添加数据?

时间:2018-07-26 04:21:25

标签: python pandas date dataframe

你好,我是python和pandas的新手

我有两个数据帧,一个在“每日”粒度较高的时间范围内,一个在每小时粒度较低的时间范围内。我想做的是将“趋势”数据从较高的时间范围追加到当天相同的较低的时间范围。我有麻烦了我的DataFrame具有日期时间索引,看起来像这样:

更长的时间范围:

 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

非常感谢任何帮助!

1 个答案:

答案 0 :(得分: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