如何在 pandas 中进行前滚总和? [英] how to do forward rolling sum in pandas?
本文介绍了如何在 pandas 中进行前滚总和?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有这个数据框:
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)})
我按日期对数据框进行了排序:
I sorted the data frame by Date:
df.sort_values('B',inplace=True)
我希望在日期上进行前滚总和.但是,我只能使用以下方法进行后滚总和:
I am looking to do a forward rolling sum on date. However, I can only do backward rolling sum using:
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
我想进行前滚总和.
推荐答案
我认为需要按iloc[::-1]
进行更改排序:
I believe need change ordering by iloc[::-1]
:
df1 = (df.iloc[::-1]
.groupby('A', sort=False)
.rolling(7, on='B',min_periods=0).C
.sum()
.iloc[::-1])
这篇关于如何在 pandas 中进行前滚总和?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文