获取 cumprod() 用于熊猫数据透视表中的行



我想计算包含月回报的数据透视表的每年几何回报(累积回报),并将其作为一列添加到表中。数据透视表如下所示:

In [474]: piv.tail(3)
Out[474]: 
month   1    2    3    4    5    6    7    8    9    10   11   12
year                                                             
2015   3.0 -5.6  1.5 -0.1  0.3 -1.7  0.5 -7.0  0.3 -0.1  0.4  0.0
2016   5.2  4.7 -0.3  1.3 -6.1  0.3  3.5 -0.1  1.2 -1.9  0.7  0.9
2017   2.5  2.1  0.1  2.6  4.8  0.1  2.8  0.1 -2.1  0.5  NaN  NaN

piv['annual'] = (piv+1).cumprod(axis=1)-1

这会引发错误。卡在这里。任何帮助表示赞赏。

  1. 这些返回太大,无法在十进制空间中。 它们必须位于百分比空间中。 因此,除以 100。
  2. 使用prod

piv.assign(annual=(piv / 100 + 1).prod(1) * 100 - 100)
Month    1    2    3    4    5    6    7    8    9   10   11   12     annual
Year                                                                        
2015   3.0 -5.6  1.5 -0.1  0.3 -1.7  0.5 -7.0  0.3 -0.1  0.4  0.0  -8.600390
2016   5.2  4.7 -0.3  1.3 -6.1  0.3  3.5 -0.1  1.2 -1.9  0.7  0.9   9.272164
2017   2.5  2.1  0.1  2.6  4.8  0.1  2.8  0.1 -2.1  0.5  NaN  NaN  14.156949

最新更新