首页 > 解决方案 > 计算 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,依此类推。有没有一种有效的方法来做到这一点?谢谢。

标签: pythonpython-3.xpandasdataframeaverage

解决方案


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


推荐阅读