Ich habe eine rollende Summe, die auf einem gruppierten Datenrahmen berechnet wird, aber es summiert sich falsch, es ist eine Summe der Zukunft, wenn ich eine Summe der Vergangenheit brauche.Wie man die rollende Summe umkehrt?
Was mache ich hier falsch?
ich die Daten und sortieren nach Dimension und Datum importieren (Ich habe versucht, Art bereits das Datum zu entfernen)
df = pd.read_csv('Input.csv', parse_dates=True)
df.sort_values(['Dimension','Date'])
print(df)
ich dann eine neue Spalte erstellen, das ein Multi-Index durch Walzen Fenster
gruppiert istnew_column = df.groupby('Dimension').Value1.apply(lambda x:
x.rolling(window=3).sum())
ich setzen Sie den Index dann das gleiche wie das Original
df['Sum_Value1'] = new_column.reset_index(level=0, drop=True)
print(df)
I h zu sein Ich habe auch versucht, den Index vor der Berechnung umzukehren, aber das ist auch fehlgeschlagen.
Eingang
Dimension,Date,Value1,Value2
1,4/30/2002,10,20
1,1/31/2002,10,20
1,10/31/2001,10,20
1,7/31/2001,10,20
1,4/30/2001,10,20
1,1/31/2001,10,20
1,10/31/2000,10,20
2,4/30/2002,10,20
2,1/31/2002,10,20
2,10/31/2001,10,20
2,7/31/2001,10,20
2,4/30/2001,10,20
2,1/31/2001,10,20
2,10/31/2000,10,20
3,4/30/2002,10,20
3,1/31/2002,10,20
3,10/31/2001,10,20
3,7/31/2001,10,20
3,1/31/2001,10,20
3,10/31/2000,10,20
Ausgang:
Dimension Date Value1 Value2 Sum_Value1
0 1 4/30/2002 10 20 NaN
1 1 1/31/2002 10 20 NaN
2 1 10/31/2001 10 20 30.0
3 1 7/31/2001 10 20 30.0
4 1 4/30/2001 10 20 30.0
5 1 1/31/2001 10 20 30.0
6 1 10/31/2000 10 20 30.0
7 2 4/30/2002 10 20 NaN
8 2 1/31/2002 10 20 NaN
9 2 10/31/2001 10 20 30.0
10 2 7/31/2001 10 20 30.0
11 2 4/30/2001 10 20 30.0
12 2 1/31/2001 10 20 30.0
13 2 10/31/2000 10 20 30.0
Tor Ausgang:
Dimension Date Value1 Value2 Sum_Value1
0 1 4/30/2002 10 20 30.0
1 1 1/31/2002 10 20 30.0
2 1 10/31/2001 10 20 30.0
3 1 7/31/2001 10 20 30.0
4 1 4/30/2001 10 20 30.0
5 1 1/31/2001 10 20 NaN
6 1 10/31/2000 10 20 NaN
7 2 4/30/2002 10 20 30.0
8 2 1/31/2002 10 20 30.0
9 2 10/31/2001 10 20 30.0
10 2 7/31/2001 10 20 30.0
11 2 4/30/2001 10 20 30.0
12 2 1/31/2001 10 20 Nan
13 2 10/31/2000 10 20 NaN
Ich denke, dass Sie durch konstante Werte in OP Beispiel irregeführt werden, aber die Notwendigkeit ist, eine umgekehrte Summe zu machen – Boud
@Boud habe ich diesen Teil übersehen. Aber ich denke, das gibt immer noch das richtige Ergebnis :). Wie auch immer, die Vergangenheit oder Zukunft hier ist nur, wo Sie die Summe Ergebnisse, wenn die Daten nach Datum sortiert sind. Oder vielleicht OP muss nur den Datenrahmen nach Datum in aufsteigender Reihenfolge zunächst sortieren. – Psidom
Sneaky @Boud betrogen und lesen Sie die "Worte" in OP Post/shakes_head – piRSquared