我知道如何使用pandas数据框计算绝对值的变化百分比,方法如下:

df_pctChange = df_absolute.pct_change()


但是我似乎无法弄清楚如何计算逆数:使用df_absolute的第一行作为起点,如何根据df_pctChange中的百分比变化计算绝对数?

例如,假设df_absolute中两列的初始行是548625525980,而df_pctChange是以下内容:

NaN         NaN
-0.004522   -0.000812
-0.009018    0.001385
-0.009292   -0.002438


如何产生df_absolute的内容?它应如下所示:

 548625      525980
 546144      525553
 541219      526281
 536190      524998

最佳答案

您应该可以使用以下公式:

(1 + r).cumprod()


以获得累积增长因子。

例:

>>> data
        0       1
0  548625  525980
1  546144  525553
2  541219  526281
3  536190  524998

>>> pctchg = data.pct_change()

>>> init = data.iloc[0]  # may want to use `data.iloc[0].copy()`
>>> res = (1 + pctchg).cumprod() * init
>>> res.iloc[0] = init
>>> res
          0         1
0  548625.0  525980.0
1  546144.0  525553.0
2  541219.0  526281.0
3  536190.0  524998.0


为了确认您已将正确的绝对数字进行了反向处理:

>>> np.allclose(data, res)
True

关于python - 使用Pandas数据框从变化百分比计算绝对值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49240133/

10-13 07:00