首页 > 解决方案 > 仅当非零时才使用 pandas 滚动求和

问题描述

我正在尝试计算滚动和,但我只需要非零值的滚动和。

我有以下用于滚动总和的代码:

a = [0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 1, 0]
pd.Series(a).rolling(3).sum()
Out[67]: 
0     NaN
1     NaN
2     1.0
3     2.0
4     2.0
5     2.0
6     2.0
7     2.0
8     2.0
9     2.0
10    3.0
11    2.0
dtype: float64

但我需要如下结果:

0     NaN
1     NaN
2     1.0
3     2.0
4     0.0
5     2.0
6     2.0
7     0.0
8     2.0
9     2.0
10    3.0
11    0.0
dtype: float64

如果原始系列中有 0,则需要在滚动和输出中保持为 0。谁能帮我这个?

标签: pythonpandas

解决方案


你的意思是:

s = pd.Series(a)
s.rolling(3).sum() * s

输出:

0     NaN
1     NaN
2     1.0
3     2.0
4     0.0
5     2.0
6     2.0
7     0.0
8     2.0
9     2.0
10    3.0
11    0.0
dtype: float64

推荐阅读