pandas 滚动计算 - 添加百分比变化

pandas rolling calculation - adding percentage change

我正在尝试将 pandas 系列从百分比变化转换回水平。系列中的第一个值是水平数字,但系列中的所有后续值都是百分比变化。 这是我的数据框:

+--------+
|  pct   |
+--------+
| 103300 |
|    .06 |
|    .11 |
|    .02 |
+--------+

生成的系列看起来像这样:

+----------+
|  levels  |
+----------+
|   103300 |
|   109498 |
| 121542.8 |
| 123973.6 |
+----------+

109498 = .06 * 103300 + 103300

121542.8 = .11 * 109498 + 109498

每次迭代都使用之前新计算的数字。我将如何在 pandas 中执行此操作?我看过滚动和扩展,但我无法得到我想要的。

使用累积乘积功能:

df.ix[1:] = df[0] * (df.ix[1:] + 1).cumprod()
#0    103300.0000
#1    109498.0000
#2    121542.7800
#3    123973.6356

首先,我会将 1 添加到所有百分比中:

df['levels'] = df.pct
df.levels.loc[1:] += 1

df

         pct     levels
0  103300.00  103300.00
1       0.06       1.06
2       0.11       1.11
3       0.02       1.02

...因为这只是应用 cumprod():

的问题
df.levels = df.levels.cumprod()

df

         pct       levels
0  103300.00  103300.0000
1       0.06  109498.0000
2       0.11  121542.7800
3       0.02  123973.6356