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

Pandas 熊猫:如何根据月度数据计算年度通胀?,pandas,Pandas,我有一个带有月经通货膨胀的数据框,它有一个周期指数: 通货膨胀 月份 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-

我有一个带有月经通货膨胀的数据框,它有一个周期指数:


通货膨胀
月份
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
[[期间('2016-01,'M'),1.27],
[期间('2016-02,'M'),0.9],
[期间('2016-03,'M'),0.43],
[期间('2016-04','M'),0.61],
[期间('2016-05,'M'),0.78],
[期间('2016-06,'M'),0.35],
[期间('2016-07','M'),0.52],
[期间('2016-08,'M'),0.44],
[期间('2016-09','M'),0.08],
[期间('2016-10','M'),0.26],
[期间('2016-11','M'),0.18],
[期间('2016-12','M'),0.3],
[期间('2017-01,'M'),0.38],
[期间('2017-02','M'),0.33],
[期间('2017-03,'M'),0.25],
[期间('2017-04','M'),0.14],
[期间('2017-05','M'),0.31],
[期间('2017-06','M'),-0.23],
[期间('2017-07','M'),0.24],
[期间('2017-08','M'),0.19],
[期间('2017-09','M'),0.16],
[期间('2017-10','M'),0.42],
[期间('2017-11','M'),0.28],
[期间('2017-12','M'),0.44]]

使用:

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


什么是预期输出?什么是预期输出?这并不奇怪,如果我使用sum()运行,它会正确地给出聚合值,但是如果我使用cumprod()运行,它会返回每个月的值。看起来pandas没有将cumprod()视为聚合函数。@neves-是的,它应该返回与原始数据帧相同大小的序列。sum,mean aggregate data,
cumsum
cumprod
diff
不是。因此可能需要先使用
sum
之类的,然后再对输出
系列
df.groupby(pd.Grouper(freq='A')).sum().cumprod()
如果我使用sum()运行,它会正确地给出聚合值,但是如果我使用cumprod()运行,它会返回每个月的值。看起来pandas没有将cumprod()视为聚合函数。@neves-是的,它应该返回与原始数据帧相同大小的序列。求和,平均聚集数据,
cumsum
cumprod
diff
不是。因此可能需要首先使用
sum
类似,然后用于输出
系列
df.groupby(pd.Grouper(freq='A')).sum().cumprod()