2017-04-26 6 views
0

ich einen Datenrahmen df haben, die wie folgt aussieht:Rolle durch eine Datenrahmen

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 

ich ein Rollfenster erstellen möchten, die mit dem Fenster an der Spitze des df Datenrahmen beginnend 5 aufeinanderfolgenden Tagen sagen würde: 01/10/2007-05/10/2007 und mir erlauben, einen neuen Datenrahmen mit dieser Datenuntersatz zu erstellen, so dass die neue Datenrahmen (mit dem Namen subDf sagen) würde zunächst wie folgt aussehen:

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 

Sobald ich die Teilmenge in 012.320.815 verarbeitet hatte, würde ich dann in der Lage sein, den df Datenrahmen von einem Tag auf rollen und erstellen Sie die subDf datframe so dass es wie folgt aussieht:

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 

dies wird fortgesetzt, bis ich den Boden des df Datenrahmen mit der letzten Wiederholung von subDf erreichen sah aus wie:

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 

Muss ich durch den Index als interger (0,1,2,3,4 ...) oder als Daten (01/10/2007,02/10/bis Interate brauchen 2007,03/10/2007 ....). Jede Hilfe, wie ich das angehen kann, wäre sehr willkommen.

+0

Müssen Sie Operationen an jedem SubDF durchführen, wie zum Beispiel den Durchschnitt oder die Standardabweichung? Pandas erlaubt es, Funktionen auf ein rollendes Stück eines Datenrahmens anzuwenden: http://pandas.pydata.org/pandas-docs/stable/computation.html#window-functions – FLab

+0

Es ist unklar, was du machst, wenn du sagst "roll down "Der Datenrahmen um einen Tag und" subDf. Warum erstellen Sie nicht einfach Ihre Subset-Datei mit 'df.iloc [:: 5]'? Es hört sich nicht so an, als würden Sie eine Aggregation machen. –

Antwort

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

Bitte fügen Sie weitere Informationen und Kontext hinzu. Was macht dieser Code und wie beantwortet er die Frage des Benutzers? Wenn Sie eine Nur-Code-Antwort erstellen, muss der Code zumindest gut kommentiert sein. –

Verwandte Themen