2017-04-26 62 views
0

我有一個數據幀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 

我想創造條件,採取說連續5天開始與窗口的DF數據框的頂部滾動窗口: 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 

有一次,我在處理的子,我會那麼能夠通過一天滾下df數據框並重新創建subDf datframe所以它看起來像:

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 

這樣繼續下去,直到我的subDf最後一次迭代達到df數據框的底部看起來像:

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 

我需要通過索引來interate作爲一個整數(0,1,2,3,4 ...),或日期(1月10日/ 2007,02/10/2007,03 /二千零七分之十....)。任何幫助如何解決這個問題將不勝感激。

+0

您是否需要對每個subDF執行操作,如採用平均值還是標準偏差? Pandas允許在數據框的滾動切片上應用函數:http://pandas.pydata.org/pandas-docs/stable/computation.html#window-functions – FLab

+0

目前還不清楚當你說「roll down 「一天的數據框和」重新創建「subDf。爲什麼不使用'df.iloc [:: 5]'創建子集df?這聽起來不像你正在做任何聚合。 –

回答

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) 
+1

請添加更多信息和上下文。這段代碼做了什麼?它如何回答用戶的問題?如果你打算做一個只有代碼的答案,那麼代碼至少需要很好的評論。 –