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
我正在尝试将 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