Ich migiere jetzt eines meiner Spark-Projekt zu Pandas, und eines der Probleme, die ich traf, ist die Implementierung einer rollenden Summe wie Funktion in Pandas innerhalb jeder Gruppe.Rolling sum filling Zwischenwerte auf gruppierten DataFrames
Angenommen, ich habe:
key time value
A 1 10
A 2 20
A 4 30
A 8 10
B 1 15
B 2 30
B 3 15
Ich mag erste Gruppe von key
, dann einen rolling-sum artige Funktion berechnen, die auf value
bezüglich time
Zwischenzeitschlitze füllt. wenn die Fenstergröße 2 ist zum Beispiel, wird mein Wunsch ausgegeben werden:
key time output
A 1 10
A 2 30 (10+20)
A 3 30 (10+20+0)
A 4 50 (20+0+30)
A 5 30 (0+30+0)
A 6 30 (the same as above)
A 8 10 (7 is 0 so it is omitted)
A 9 10
A 10 10
B 1 15
B 2 45
B 3 60
B 4 45
B 5 15
Ich habe auf group by
und apply
einen ganzen Nachmittag zu kämpfen. Gibt es dafür einen cleveren Weg? Im Funken kann ich collect_list
dann select
ein udf zu time
und value
, um dies zu tun, aber Pandas scheint anders zu denken als Spark.
Vielen Dank!
Sie scheinen "Erstellen" -Daten werden. Es ist nicht klar, wie die Ausgabe Zeit von 1 bis 5 für A und nur 1 bis 4 für B hat. –
@COLDSPEED Sorry für Unklarheiten, der letzte Wert des Datensatzes dauert für 1 Zeitschlitz, weil die Fenstergröße 1 ist. – DarkZero
ist Ihr Ergebnis für Fenstergröße 2 oder 3? –