滚动数据框

时间:2017-04-26 12:50:44

标签: python pandas

我有一个数据框df,如下所示:

date        waveLength
01/10/2007  21.0831
02/10/2007  21.3513
03/10/2007  21.2866
04/10/2007  21.0683
05/10/2007  21.7731
08/10/2007  22.626
09/10/2007  22.6274
10/10/2007  22.4751
11/10/2007  21.8606
12/10/2007  22.5411
15/10/2007  22.5007
16/10/2007  22.8511
17/10/2007  23.2782
18/10/2007  23.3793
19/10/2007  22.9508
22/10/2007  23.4952
23/10/2007  25.0852
24/10/2007  25.0542
25/10/2007  24.6298
26/10/2007  24.8885
29/10/2007  24.941
30/10/2007  25.1984

我想创建一个滚动窗口,从df数据框的顶部开始连续5天,窗口为01/10/200705/10/2007,并允许我创建一个新的数据框这个数据子集,所以新的数据帧(名为subDf)最初看起来像:

date        waveLength
    01/10/2007  21.0831
    02/10/2007  21.3513
    03/10/2007  21.2866
    04/10/2007  21.0683
    05/10/2007  21.7731

我在subDf处理了子集后,我就可以将df数据帧向下滚动一天并重新创建subDf数据帧,如下所示:

    02/10/2007  21.3513
    03/10/2007  21.2866
    04/10/2007  21.0683
    05/10/2007  21.7731
    08/10/2007  22.626

这一直持续到df数据框的底部,最后一次subDf迭代看起来像:

    24/10/2007  25.0542
    25/10/2007  24.6298
    26/10/2007  24.8885
    29/10/2007  24.941
    30/10/2007  25.1984

我是否需要整理索引作为整数(0,1,2,3,4 ...),或作为日期(01/10 / 2007,02 / 10 / 2007,03 / 10/2007) ....)。如何解决这个问题我将不胜感激。

1 个答案:

答案 0 :(得分:1)

import numpy as np
import pandas as pd

dates = ['01/10/2007', '02/10/2007', '03/10/2007', '04/10/2007', '05/10/2007', '06/10/2007', '07/10/2007']
wavelengths = np.random.rand(7)
data = pd.DataFrame({"date": dates,"wavelength": wavelengths})

for row_id in range(len(data)-4):
   sub_data = data.loc[row_id:(row_id+4)]
   print(sub_data)