我有一个数据显示月经膨胀的数据框,它有一个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]]
答案 0 :(得分:4)
使用:
df.groupby(pd.Grouper(freq='A')).cumprod()