熊猫滚动分组时间序列D

2024-05-06 10:17:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我有foundafew相关的问题,但似乎没有一个能做到这一点。我想要一个类似于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没有重叠的时间帧;将groupby设置为2天将得到183个(366/2)组,其中包含两天的数据。将groupby设为5天,我将得到大约74个(366/5)组,每个组有5天。我想要183组,每个组有5天。在

如果不清楚,请提前道歉。我想要的是:

^{pr2}$

这就是我得到的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

Tags: 数据testimportpandasdataasnprandom
1条回答
网友
1楼 · 发布于 2024-05-06 10:17:43

如果日期是正态序列,如示例数据所示相差一天,则可以使用index来提取行。从每两行开始,为每个pick选择五行:

[data.iloc[i:(i+5)] for i in range(0, len(data), 2)]

#[                Test
# 2016-01-01  0.450173
# 2016-01-02 -0.496819
# 2016-01-03  0.270781
# 2016-01-04 -0.207634
# 2016-01-05  1.032061,                 
#                 Test
# 2016-01-03  0.270781
# 2016-01-04 -0.207634
# 2016-01-05  1.032061
# 2016-01-06 -0.470462
# 2016-01-07 -1.077634, ...]

相关问题 更多 >