我正在尝试将熊猫系列从百分比变化转换回水平。系列中的第一个值是级别上的数字,但是系列中的以下所有值都是百分比变化。 这是我的数据框:
+--------+
| pct |
+--------+
| 103300 |
| .06 |
| .11 |
| .02 |
+--------+
生成的系列如下:
+----------+
| levels |
+----------+
| 103300 |
| 109498 |
| 121542.8 |
| 123973.6 |
+----------+
109498 = .06 * 103300 + 103300
121542.8 = .11 * 109498 + 109498
每次迭代都使用先前新计算的数字。我要如何在熊猫中做到这一点?我已经看过滚动和扩展功能,但我无法完全获得想要的功能。
答案 0 :(得分:1)
首先,我要在所有百分比中添加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
答案 1 :(得分:0)
使用累积产品功能:
df.ix[1:] = df[0] * (df.ix[1:] + 1).cumprod()
#0 103300.0000
#1 109498.0000
#2 121542.7800
#3 123973.6356