熊猫:如何根据月度数据计算年度通货膨胀?

时间:2018-10-02 13:51:15

标签: pandas

我有一个数据显示月经膨胀的数据框,它有一个PeriodIndex:

inflation month
2016-01 1.27 2016-02 0.90 2016-03 0.43 2016-04 0.61 2016-05 0.78 2016-06 0.35 2016-07 0.52 2016-08 0.44 2016-09 0.08 2016-10 0.26 2016-11 0.18 2016-12 0.30 2017-01 0.38 2017-02 0.33 2017-03 0.25 2017-04 0.14 2017-05 0.31 2017-06 -0.23 2017-07 0.24 2017-08 0.19 2017-09 0.16 2017-10 0.42 2017-11 0.28 2017-12 0.44

我认为每年的通货膨胀将非常容易计算,只需重新采样到每年的周期即可:

(df/100+1).resample('A').cumprod()

但是它给了我错误:

AttributeError: 'PeriodIndexResampler' object has no attribute 'cumprod'

它可以与更简单的功能(例如sum)一起使用,但是我尝试了一些替代方法,并且cumprod不会使结果聚集。

我的预期答案是:

2016    1.062881
2017    1.029473   

哪个是进行此计算的最佳方法?

以下是用于复制和粘贴的数据:

python [[Period('2016-01', 'M'), 1.27], [Period('2016-02', 'M'), 0.9], [Period('2016-03', 'M'), 0.43], [Period('2016-04', 'M'), 0.61], [Period('2016-05', 'M'), 0.78], [Period('2016-06', 'M'), 0.35], [Period('2016-07', 'M'), 0.52], [Period('2016-08', 'M'), 0.44], [Period('2016-09', 'M'), 0.08], [Period('2016-10', 'M'), 0.26], [Period('2016-11', 'M'), 0.18], [Period('2016-12', 'M'), 0.3], [Period('2017-01', 'M'), 0.38], [Period('2017-02', 'M'), 0.33], [Period('2017-03', 'M'), 0.25], [Period('2017-04', 'M'), 0.14], [Period('2017-05', 'M'), 0.31], [Period('2017-06', 'M'), -0.23], [Period('2017-07', 'M'), 0.24], [Period('2017-08', 'M'), 0.19], [Period('2017-09', 'M'), 0.16], [Period('2017-10', 'M'), 0.42], [Period('2017-11', 'M'), 0.28], [Period('2017-12', 'M'), 0.44]]

1 个答案:

答案 0 :(得分:4)

使用:

df.groupby(pd.Grouper(freq='A')).cumprod()