Ich habe einen Pandas DataFrame (df
) mit Informationen, die ich basierend auf Informationen in einem anderen Pandas DataFrame (dfIdx
) mit den gleichen Spalten und Index summieren möchte. Insbesondere nimmt, wenn df
die folgende Form:Kumulative Summe Pandas DataFrame mit Indikator DataFrame
df = pd.DataFrame([[172770, 1442, 114581],[35464, 67062, 175285],[124399, 14294, 44104],[50608, 58802, 189253],[1000, 10000, 100000]],columns=['A','B','C'])
und dfIdx der folgenden Form:
dfIdx = pd.DataFrame([[0, 0, 1], [0, 0, 0], [0, 1, 0], [1, 1, 0],[0,0,1]],columns=['A','B','C'])
ich das Ergebnis will die kumulative Summe der Zeilen in df
vorangehen und die Zeilen zu sein in dfIdx
mit einem Wert von 1
. So sollte das Ergebnis wie folgt aussehen:
A B C
0 0 0 114581
1 0 0 0
2 0 82798 0
3 383241 58802 0
4 0 0 508642
Für zusätzliche Kredite, ich möchte flexibel sein, in Bezug auf, wie weit zurück die kumulative Summe enthält Beiträge. wenn das Fenster für die kumulative Summe zum Beispiel 1
ist, dann würde ich nur höchstens eine vorhergehende Zeile enthalten mögen, das Ergebnis geben:
A B C
0 0 0 114581
1 0 0 0
2 0 81356 0
3 175007 58802 0
4 0 0 289253
Ich weiß, das ursprüngliche Beispiel habe ich nicht bieten alle Beispiele für Verhalten, das ich wollte, und als Ergebnis war die vorgeschlagene Lösung unvollständig. Ich habe die Daten um eine weitere Zeile erweitert, um ein vielfältigeres Verhalten zu ermöglichen.
Wenn es hilft, verwenden Sie die vorgeschlagene Lösung by @ScottBoston unten scheint zu funktionieren, wenn ich seine 'df_group' ändere, um' dfIdx.loc [list (reversed (dfIdx.index))]]. cumsum(). loc [dfIdx.index, x.name] 'zu sein. Irgendwelche anderen Vorschläge? – DrTRD