python - 计算 pandas 列中指定值范围的平均值并存储为另一列
问题描述
我可以在 for 循环中计算平均值,但这似乎不是一个有效的解决方案。因此,请考虑以下 DataFrame:
Index Numbers
1 12
2 19
3 47
4 78
5 32
6 63
7 89
我想计算上述四个值的第四个值之后的每个数字的平均值,并将其存储在相邻的列中。所以预期的输出是:
Index Numbers Average
1 12
2 19
3 47
4 78 39
5 32 44
6 63 55
7 89 65.5
所以前四个数字的平均值,即索引(1 到 4)是 39,下一个(2 到 5)是 44,依此类推。有没有一种有效的方法来做到这一点?谢谢。
解决方案
Series.rolling
与 一起使用mean
:
df['Average'] = df['Numbers'].rolling(4).mean()
print (df)
Index Numbers Average
0 1 12 NaN
1 2 19 NaN
2 3 47 NaN
3 4 78 39.0
4 5 32 44.0
5 6 63 55.0
6 7 89 65.5
可能实现的功能rolling
:
Rolling.count
Rolling.sum
Rolling.mean
Rolling.median
Rolling.var
Rolling.std
Rolling.min
Rolling.max
Rolling.corr
Rolling.cov
Rolling.skew
Rolling.kurt
Rolling.apply
Rolling.aggregate
Rolling.quantile
推荐阅读
- google-apps-script - 如何在谷歌应用脚本的查询中使用分组依据
- ios - 如果 iOS 应用程序被沙盒化,它如何知道根目录是什么?
- ios - 如何从 fcm 令牌获取 APNS 令牌?
- linux - 安装 iperf 3.7.0 后的问题
- python - 如何将 pandas 数据帧标头连接到一个标头中?
- python - 箭头和日期时间的时间格式问题
- c++ - 右值引用作为地图模板参数
- c++ - 从 std::istream 中提取完整的当前行
- flutter - 在我的活动中按回我的第一个活动
- gradle - IntelliJ / IDEA Gradle 插件找不到源 JAR