Ich habe einen Datenrahmen:Pandas Datenrahmen, caclulate max Spaltenwert relativ zum aktuellen Zeile Spaltenwert
df = pd.DataFrame({
'epoch' : [1, 4, 7, 8, 9, 11, 12, 15, 16, 17],
'price' : [1, 2, 3, 3, 1, 4, 2, 3, 4, 4]
})
epoch price
0 1 1
1 4 2
2 7 3
3 8 3
4 9 1
5 11 4
6 12 2
7 15 3
8 16 4
9 17 4
Ich habe eine neue Spalte zu schaffen, die in der folgenden Weise berechnet werden:
Für jeden Reihe
aktuelle Zeile der Epoche finden (sie e_cur sagen)
berechnen e_cur-3 = e_cur - 3 (drei ist eine konstante, hier aber es wird variabel sein)
Preis berechnen Max-Wert, wo Epoche> = e-3_cur und Epoche < = e_cur
Mit anderen Worten: Höchstpreis in Reihen finden, die drei Epochen entfernt sind von den aktuellen Reihe der Epoche.
Zum Beispiel:
Index = 0, = e_cur Epoche = 1, e_cur-3 = 1 -3 = -2, gibt es nur eine (erste) Zeile, deren Epoche ist zwischen -2 und 1, so dass die Preis aus der ersten Zeile ist Maximalpreis
Index = 6, e_cur = Epoche = 12, e_cur-3 = 12 - 3 = 9, es gibt drei Zeilen, deren Epoche zwischen 9 und 12 liegt, aber Reihe mit Index = 5 der Höchstpreis hat = 4.
Hier sind die Ergebnisse für jede Zeile, die ich manuell berechnet:
epoch price max_price_where_epoch_is_between_e_cur-3_and_e_cur
0 1 1 1
1 4 2 2
2 7 3 3
3 8 3 3
4 9 1 3
5 11 4 4
6 12 2 4
7 15 3 3
8 16 4 4
9 17 4 4
Wie Sie sehen können, geht Epoche etwas nach dem anderen, aber manchmal gibt es "Löcher".
Wie berechnet man das mit Pandas?
probe 'apply' sollte geben Sie Ihre richtige Antwort – Wen