熊猫滚动计算-增加百分比变化

时间:2018-11-19 01:55:49

标签: python pandas dataframe series percentage

我正在尝试将熊猫系列从百分比变化转换回水平。系列中的第一个值是级别上的数字,但是系列中的以下所有值都是百分比变化。 这是我的数据框:

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

生成的系列如下:

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

109498 = .06 * 103300 + 103300

     

121542.8 = .11 * 109498 + 109498

每次迭代都使用先前新计算的数字。我要如何在熊猫中做到这一点?我已经看过滚动和扩展功能,但我无法完全获得想要的功能。

2 个答案:

答案 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