我有一个数据框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/2007
到05/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) ....)。如何解决这个问题我将不胜感激。
答案 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)