2017-11-30 3 views
0

ich diese beiden Serien in einem Datenrahmen haben:Count, wenn Daten ist höher als eine andere Serie in einem Rollfenster vergangenen zwei (oder mehr) Werte in Pandas

A B 
1 2 
2 3 
2 1 
4 3 
5 2 

und ich möchte eine neue Spalte erstellen df['C ], die zählt, wie oft der Wert in der Spalte df['A'] höher ist als der Wert in der Spalte df['B'] für ein rollendes Fenster der vorherigen 2 (oder mehr) Zeilen.

Das Ergebnis wäre so etwas wie dieses:

A B C 
    1 2 NaN 
    2 3 NaN 
    2 1 0 
    4 3 1 
    5 2 2 

ich auch eine Spalte erstellen möchten, die die Daten in df['A'] höher als df['B'] fasst immer ein Rollfenster.

mit folgendem Ergebnis:

A B C D 
    1 2 NaN NaN 
    2 3 NaN NaN 
    2 1 0 0 
    4 3 1 2 
    5 2 2 6 

Vielen Dank im Voraus.

Antwort

0

IIUC

df.assign(C=df.A.gt(df.B).rolling(2).sum().shift(),D=(df.A.gt(df.B)*df.A).rolling(2).sum().shift()) 
Out[1267]: 
    A B C D 
0 1 2 NaN NaN 
1 2 3 NaN NaN 
2 2 1 0.0 0.0 
3 4 3 1.0 2.0 
4 5 2 2.0 6.0 
Verwandte Themen