einen Datenrahmen von nur eine Spalte gegeben, wie kann ich es in einen anderen Datenrahmen "Puffer" (die Größe 2), konvertiere unten beschrieben:Erstellen Sie "Puffer" -Matrix aus Datenrahmen mit Rolling Window?
df =
0
0 1
1 2
2 3
3 4
4 4
5 5
6 5
expected_buffer =
0 1
0 1 2
1 2 3
2 3 4
3 4 5
Dies ist mein Versuch:
def buff(df,past):
arr1=df.values
arr=arr1[0:past]
for i in xrange(past,df.shape[0]-past+2):
arr=np.append(arr,arr1[i:past+i],axis=0)
return pd.DataFrame(arr)
Welche th zurück Folgendes:
0
0 1
1 2
2 3
3 4
4 4
5 5
6 5
Wie erhalten Sie die erwartete Buff-Ausgabe?
EDIT: Von past
Ich meine die Puffergröße. Mit MATLAB Notationen: I 5 Element Spaltenvektor haben
df = [1;2;3;4;5]
Wenn past
2 ist, sollte ich die folgende Ausgabe am Ende immer:
buff = [1 2; 2 3; 3 4; 4 5]
Wenn past
3 ist, dann sollte erwartet ausgegeben werden
buff = [1 2 3; 2 3 4; 3 4 5]
Wenn past
4 ist, dann ist zu erwarten Ausgang
buff = [1 2 3 4; 2 3 4 5]
Also für n
-elementigen df
und past=m
, würde ich eine Matrix der Größe (n-past+1)
x past
bekommen.
Ich habe Probleme zu verstehen, was Sie wollen. Können Sie in Worten beschreiben, was Ihr "Puffer" sein soll? –
'rr = pd.Serie ([0,1,2,3,4,4,5,5]); pd.DataFrame (Daten = {'A': rr, 'B': rr.shift (-1) .dropna()}) '? – Abdou
Woher wissen Sie, wo der Puffer startet? – Merlin