首页 > 解决方案 > 大熊猫每条记录最近 13 个月的平均值

问题描述

我正在尝试计算 P1 和 P2 每个月过去 13 个月的平均值。以下是数据示例:

         P1  P2
Month         
May-16   4  24
Jun-16   2   9
Jul-16   4  20
Aug-16   2  12
Sep-16   7   8
Oct-16   7  11
Nov-16   0   4
Dec-16   3  18
Jan-17   4   9
Feb-17   9  16
Mar-17   2  13
Apr-17   9   9
May-17   5  13
Jun-17   9  16
Jul-17   5  11
Aug-17   6  11
Sep-17   8  13
Oct-17   6  12
Nov-17   9  21
Dec-17   4  12
Jan-18   2  12
Feb-18   7  17
Mar-18   5  15
Apr-18   3  13
May-18   7  25
Jun-18   5  23

我正在尝试创建此表:

         P1 P2  AVGP1 AVGP2
Month
Jun-17   9  16  4.85  11.23
Jul-17   5  11  5.08  11.38
Aug-17   6  11  5.23  11.54
Sep-17   8  13  5.69  11.54
Oct-17   6  12  5.62  11.85
Nov-17   9  21  5.77  12.46
Dec-17   4  12  6.08  13.08
Jan-18   2  12  6.00  12.62
Feb-18   7  17  6.23  13.23
Mar-18   5  15  5.92  13.23
Apr-18   3  13  6.00  13.23
May-18   7  25  5.85  14.46
Jun-18   5  23  5.85  15.23

目标是使用上表创建一个数据框。我不知道如何制作一个只计算过去 13 个月数据的函数。任何帮助都会很棒!

标签: pythonpandasdataframeaverage

解决方案


您可以使用pd.DataFrame.rolling后跟dropna

res = df.join(df.rolling(13).mean().add_prefix('AVG')).dropna(how='any')

print(res)

        P1  P2     AVGP1      AVGP2
Month                              
May-17   5  13  4.461538  12.769231
Jun-17   9  16  4.846154  12.153846
Jul-17   5  11  5.076923  12.307692
Aug-17   6  11  5.230769  11.615385
Sep-17   8  13  5.692308  11.692308
Oct-17   6  12  5.615385  12.000000
Nov-17   9  21  5.769231  12.769231
Dec-17   4  12  6.076923  13.384615
Jan-18   2  12  6.000000  12.923077
Feb-18   7  17  6.230769  13.538462
Mar-18   5  15  5.923077  13.461538
Apr-18   3  13  6.000000  13.461538
May-18   7  25  5.846154  14.692308
Jun-18   5  23  5.846154  15.461538

推荐阅读