如何在计算3天移动平均线时给出指数

时间:2015-07-17 11:55:59

标签: pandas moving-average

我有如下数据集,想要计算3天移动平均值的最大值,并尝试使用此代码

pd.rolling_mean(data['prec'], 3).max()

此代码给出了移动平均线但没有日期

      year  month  day  prec
0     1981      1    1   1.5
1     1981      1    2   0.0
2     1981      1    3   0.0
3     1981      1    4   0.4
4     1981      1    5   0.0
5     1981      1    6   1.0
6     1981      1    7   1.9
7     1981      1    8   0.6
8     1981      1    9   3.7
9     1981      1   10   0.0
10    1981      1   11   0.0
11    1981      1   12   0.0
12    1981      1   13   0.0
13    1981      1   14  12.2
14    1981      1   15   1.7
15    1981      1   16   0.6
16    1981      1   17   0.9
17    1981      1   18   0.6
18    1981      1   19   0.4
19    1981      1   20   0.2
20    1981      1   21   1.4
21    1981      1   22   3.2
22    1981      1   23   0.0

我想要的格式是

 year  month  day   prec
 ....  ..     ..     ...

任何人都可以帮助解决这个问题

1 个答案:

答案 0 :(得分:0)

pd.rolling_meanpd.rolling_max的结果分配到DataFrame列:

import pandas as pd
df = pd.read_table('data', sep='\s+')

df['moving average'] = pd.rolling_mean(df['prec'], 3)
df['max of moving average'] = pd.rolling_max(df['moving average'], 3)

产量

In [32]: df
Out[32]: 
    year  month  day  prec  moving average  max of moving average
0   1981      1    1   1.5             NaN                    NaN
1   1981      1    2   0.0             NaN                    NaN
2   1981      1    3   0.0    5.000000e-01                    NaN
3   1981      1    4   0.4    1.333333e-01                    NaN
4   1981      1    5   0.0    1.333333e-01               0.500000
5   1981      1    6   1.0    4.666667e-01               0.466667
6   1981      1    7   1.9    9.666667e-01               0.966667
7   1981      1    8   0.6    1.166667e+00               1.166667
8   1981      1    9   3.7    2.066667e+00               2.066667
9   1981      1   10   0.0    1.433333e+00               2.066667
10  1981      1   11   0.0    1.233333e+00               2.066667
11  1981      1   12   0.0    1.480297e-16               1.433333
12  1981      1   13   0.0    1.480297e-16               1.233333
13  1981      1   14  12.2    4.066667e+00               4.066667
14  1981      1   15   1.7    4.633333e+00               4.633333
15  1981      1   16   0.6    4.833333e+00               4.833333
16  1981      1   17   0.9    1.066667e+00               4.833333
17  1981      1   18   0.6    7.000000e-01               4.833333
18  1981      1   19   0.4    6.333333e-01               1.066667
19  1981      1   20   0.2    4.000000e-01               0.700000
20  1981      1   21   1.4    6.666667e-01               0.666667
21  1981      1   22   3.2    1.600000e+00               1.600000
22  1981      1   23   0.0    1.533333e+00               1.600000