python - 使用python用3个月前的平均值填充0
问题描述
我的数据集具有如下值
date quantity
01/04/2018 35
01/05/2018 33
01/06/2018 75
01/07/2018 0
01/08/2018 70
01/09/2018 0
01/10/2018 66
我试过的代码:
df['rollmean3'] = df['quantity'].rolling(3).mean()
输出:
2018-04-01 35.0 NaN
2018-05-01 33.0 NaN
2018-06-01 75.0 47.666667
2018-07-01 0.0 36.000000
2018-08-01 70.0 48.333333
2018-09-01 0.0 23.333333
2018-10-01 66.0 45.333333
预期输出:但我需要输出,因为它应该取 35,33 和 75 的平均值并将其填充为 0.0 值。对于下一个零,它应该计算前三个值的平均值并填充它。
2018-04-01 35.0
2018-05-01 33.0
2018-06-01 75.0
2018-07-01 0.0 47.666667
2018-08-01 70.0
2018-09-01 0.0 64.22222 # average of (0, 47.6667 and 75)
2018-10-01 66.0
应该显示这样的输出
解决方案
不幸的是,Pandas 中似乎没有针对此问题的矢量化解决方案。您需要迭代行并一一填写缺失值。这会很慢;如果您需要加快速度,您可以使用Numba JIT 编译您的代码。
推荐阅读
- reactjs - React-Redux useSelector 在测试中的奇怪行为
- postgresql - 为什么我可以直接在我的批处理文件中调用 pg_dump 而不是 pg_start_backup?
- c# - SQL 请求 - 显示两个日期之间条目的日期
- c - 如何将值存储到多参数结构中并将 typedef 结构传递给函数?
- javascript - 如何从不同的数据列表中选择值并一次显示在同一个文本区域框中?
- powershell - 如何检查 PowerShell 变量是否是有序哈希表?
- javascript - ngx-monaco-editor:无法从 node_modules 找到 loader.js 文件
- wordpress - 在wordpress PHP中将longdomain URL重写为短域URL
- c# - 使用“AutoMapper”将一个包含类列表的类映射到另一个类似属性的类中
- excel-formula - 自定义舍入规则