расчет проката панд - добавление процентного изменения - PullRequest
0 голосов
/ 19 ноября 2018

Я пытаюсь преобразовать ряд панд из процентного изменения обратно в уровни.Первое значение в Серии - это число уровней, но все следующие значения в Серии - это процентные изменения.Это мой фрейм данных:

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

Полученная серия будет выглядеть следующим образом:

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

109498 = .06 * 103300 + 103300

121542.8 =.11 * 109498 + 109498

Каждая итерация использует предыдущее вновь вычисленное число.Как бы я сделал это в пандах?Я смотрел на движение и расширение, но я не могу получить то, что хочу.

Ответы [ 2 ]

0 голосов
/ 19 ноября 2018

Сначала я бы добавил 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
0 голосов
/ 19 ноября 2018

Используйте функцию накопленного продукта:

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