Pandas :移动 window 的累积总和(下一行和前一行)
Pandas : Cumulative sum with moving window (following and preceding rows)
我有以下数据集:
date sales
201201 5
201202 5
201203 5
201204 5
201205 5
201206 5
201207 5
201208 5
201209 5
201210 5
201211 5
201212 5
201301 100
201302 100
我想计算从开始到实际日期+12个月[=17=的累计销售额]
所以在这里 :
date sales expected
201201 5 60
201202 5 160
201203 5 260
201204 5 260
201205 5 260
201206 5 260
201207 5 260
201208 5 260
201209 5 260
201210 5 260
201211 5 260
201212 5 260
201301 100 260
201302 100 260
根据这个问题我试过了:
df['sales'].rolling(window=12).sum()
但是我正在寻找更像这样的东西:
df['sales'].rolling(window=['unlimited preceding, 11 following']).sum()
直接使用cumsum
感谢11
的shift
,而不是使用ffill
用以前的值填充NaN
:
df['expected'] = df['sales'].cumsum().shift(-11).ffill()
现在:
print(df)
是:
date sales expected
0 201201 5 60.0
1 201202 5 160.0
2 201203 5 260.0
3 201204 5 260.0
4 201205 5 260.0
5 201206 5 260.0
6 201207 5 260.0
7 201208 5 260.0
8 201209 5 260.0
9 201210 5 260.0
10 201211 5 260.0
11 201212 5 260.0
12 201301 100 260.0
13 201302 100 260.0
我有以下数据集:
date sales
201201 5
201202 5
201203 5
201204 5
201205 5
201206 5
201207 5
201208 5
201209 5
201210 5
201211 5
201212 5
201301 100
201302 100
我想计算从开始到实际日期+12个月[=17=的累计销售额]
所以在这里 :
date sales expected
201201 5 60
201202 5 160
201203 5 260
201204 5 260
201205 5 260
201206 5 260
201207 5 260
201208 5 260
201209 5 260
201210 5 260
201211 5 260
201212 5 260
201301 100 260
201302 100 260
根据这个问题
df['sales'].rolling(window=12).sum()
但是我正在寻找更像这样的东西:
df['sales'].rolling(window=['unlimited preceding, 11 following']).sum()
直接使用cumsum
感谢11
的shift
,而不是使用ffill
用以前的值填充NaN
:
df['expected'] = df['sales'].cumsum().shift(-11).ffill()
现在:
print(df)
是:
date sales expected
0 201201 5 60.0
1 201202 5 160.0
2 201203 5 260.0
3 201204 5 260.0
4 201205 5 260.0
5 201206 5 260.0
6 201207 5 260.0
7 201208 5 260.0
8 201209 5 260.0
9 201210 5 260.0
10 201211 5 260.0
11 201212 5 260.0
12 201301 100 260.0
13 201302 100 260.0