python - 仅当非零时才使用 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。谁能帮我这个?
解决方案
你的意思是:
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
推荐阅读
- python - Gensim HDP - 文档的热门主题分发
- powershell - 用 Pester 模拟 azure cli 命令
- javascript - javascript购物车中未定义的项目
- android - BundleRelease 需要 Metro 服务器
- kubernetes - 无法公开部署 Kubernetes 仪表板 (HTTPS)
- reactjs - 反应错误 - >错误:超过最大更新深度
- javascript - 提示位置的 JQuery 验证引擎问题
- angular - 错误:formGroup 需要一个 FormGroup 实例。请传入一个。 - Angular 10 错误
- sql - SQL Group By Count 过滤优化
- google-bigquery - 选择多个计算的分区值时进行分区修剪