2017-07-03 5 views
5

Ich habe einen Datenrahmen wie diese:Aggregieren von Datenrahmen in Gruppen von 3

  date  open  high   low  close  vwap 
0 1498907700 0.00010020 0.00010020 0.00009974 0.00010019 0.00009992 
1 1498908000 0.00010010 0.00010010 0.00010010 0.00010010 0.00010010 
2 1498908300 0.00010010 0.00010010 0.00009957 0.00009957 0.00009992 
3 1498908600 0.00009957 0.00009957 0.00009957 0.00009957 0.00000000 
4 1498908900 0.00010009 0.00010009 0.00009949 0.00009959 0.00009952 
5 1498909200 0.00009987 0.00009991 0.00009956 0.00009956 0.00009974 
6 1498909500 0.00009948 0.00009948 0.00009915 0.00009915 0.00009919 
... 
789 

Und möchte einen Mittelwert von jeweils 3 Zeilen tun und einen neuen Datenrahmen hat, die mit dem Mittelwert dann 3 mal kürzer ist alle Sätze von 3 Zeilen im Quell-DataFrame.

Antwort

7

Verwenden groupby und mean mit einer Reihe entwickelt, um die Gruppen, die Sie

df.groupby(np.arange(len(df)) // 3).mean() 
+0

müssen zu bilden, so was ist, wenn es nicht genügend Zeilen passen in Gruppen von 3? Ist der erste 4/5 oder der letzte? Wie könnte ich es schaffen, die erste Gruppe zu sein, die die "Waisen" bekommt? –

+1

@MaximeB das Array umkehren np.arange (len (df)) [:: - 1] // 3 – piRSquared

+0

Vielen Dank! Ich brauche mehr als das, was ich hier gefragt habe ... Vielleicht könntest du mir da draußen helfen: https://stackoverflow.com/questions/44895459/yield-and-do-operations-on-each-3-rows-of-of- Datenrahmen –

Verwandte Themen