我有一個在分組數據框上計算的滾動總和,但它加起來是錯誤的,它是未來的總和,當我需要過去的總和時。如何反向滾動?
我在這裏做錯了什麼?
我進口的尺寸和日期的數據和排序(我曾嘗試刪除的日期排序的話)
df = pd.read_csv('Input.csv', parse_dates=True)
df.sort_values(['Dimension','Date'])
print(df)
我然後創建一個新的列是由滾動窗口
new_column = df.groupby('Dimension').Value1.apply(lambda x:
x.rolling(window=3).sum())
分組多指數
我然後重置索引是原來一樣
df['Sum_Value1'] = new_column.reset_index(level=0, drop=True)
print(df)
I H大家也試圖在計算之前扭轉指數,但也失敗了。
輸入
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
輸出:
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
目標產量:
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
我認爲你在OP的例子中被常數值所誤導,但是需要做一個反向總和 – Boud
@Boud我確實忽略了這個部分。但我認爲這還是巧合地給出了正確的結果:)。實際上,如果數據按日期排序,那麼過去或未來就是您放置總和結果的位置。或者,也許OP只需要按照Date按升序對數據框進行排序。 – Psidom
Sneaky @Boud作弊並閱讀OP的帖子中的「words」/ shakes_head – piRSquared