我有这个 Dataframe :
dates = pd.date_range(start='2016-01-01', periods=20, freq='d')
df = pd.DataFrame({'A': [1] * 20 + [2] * 12 + [3] * 8,
'B': np.concatenate((dates, dates)),
'C': np.arange(40)})
我按日期对 Dataframe 进行了排序:
df.sort_values('B',inplace=True)
我希望在日期进行向前累计求和。但是,我只能使用以下方法进行向后累计求和:
df.groupby('A').rolling(7, on='B',min_periods=0).C.sum()
A B
1 2016-01-01 0.0
2016-01-02 1.0
2016-01-03 3.0
2016-01-04 6.0
2016-01-05 10.0
2016-01-06 15.0
我想做向前滚动求和。
6条答案
按热度按时间ovfsdjhp1#
我认为需要按
iloc[::-1]
更改订单:4uqofj5v2#
简单如:
lhcgjxsq3#
设置
按
'B'
排序,滚动时,反向滚动iloc[::-1]
输出
raogr8fs4#
我觉得你想
参见文档here
cgvd09ve5#
如果您的日期不是完全连续的(例如您在这里或那里缺少一两天),并且您想要固定的N天窗口(而不是N条记录窗口),则可以用途:
你也可以改变它返回一个序列而不是 Dataframe .稍后你可以把它加入到原始数据中.
gj3fmq9x6#
pandas doc