i have data sets below , want calculate max value 3 days moving average , tried code
pd.rolling_mean(data['prec'], 3).max() this code gives moving average without date
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 the format want
year month day prec .... .. .. ... can solve problem
assign result of pd.rolling_mean or pd.rolling_max dataframe column:
import pandas 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) yields
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
Comments
Post a Comment