这个问题在这里已有答案:
我有found a few相关的问题,但似乎都没有做到这一点 . 我想要一个类似的实现this但使用pandas数据帧结构 . 下面我将创建整个2016年的样本数据,其中包含366行 .
import pandas as pd
import numpy as np
dates=pd.date_range('2016-01-01','2016-12-31')
random_data=np.random.randn(len(dates))
data=pd.DataFrame(random_data,index=dates,columns=['Test'])
我想使用groupby每2天获取接下来的5天数据 . 普通groupby没有重叠的时间帧;投入2天的分组将给我183(366/2)组有两天数据 . 组合5天将给我约74(366/5)组,每组5天 . 我想要183组,每组五天 .
如果不清楚,请提前抱歉 . 这就是我想要的:
Test
2016-02-08 1.073696
2016-02-09 1.169865
2016-02-10 1.421454
2016-02-11 -0.576036
2016-02-12 -1.066921
Test
2016-02-10 1.421454
2016-02-11 -0.576036
2016-02-12 -1.066921
2016-02-13 2.639681
2016-02-14 -0.261616
这是我得到的 data.groupby(pd.TimeGrouper('2d'))
Test
2016-02-08 1.073696
2016-02-09 1.169865
Test
2016-02-10 1.421454
2016-02-11 -0.576036
Test
2016-02-12 -1.066921
2016-02-13 2.639681
这是我得到的 data.groupby(pd.TimeGrouper('5d'))
Test
2016-02-08 0.898029
2016-02-09 -0.905950
2016-02-10 -0.202483
2016-02-11 1.073696
2016-02-12 1.169865
Test
2016-02-13 1.421454
2016-02-14 -0.576036
2016-02-15 -1.066921
2016-02-16 2.639681
2016-02-17 -0.261616
1 回答
如果日期是正常序列,并且样本数据显示为一天,则可以使用索引来获取行 . 从每两行开始,为每个选择选择五行: