This is my dataframe:

```
df = pd.DataFrame({'a': [10, 20, 50]})
```

And this is the output that I want:

```
a b
0 10 100
1 20 20
2 50 10
```

I have an initial value which is 1000. Then I want to create column `b`

. The first row of `b`

is 10 percent of 1000 which is 100. The second row is 20 percent of 100 that we got previously. And the last row is 50 percent of 20.

I have tried this code but it doesn’t work:

```
df = df.reset_index(drop=True)
df.loc[0, 'b'] = 1000 * (df.a.iloc[0] / 100)
df['b'] = (df.a / 100) * df.b.shift(1)
```

### >Solution :

Are you looking for `cumprod`

?

```
(df['a'] / 100).cumprod() * 1000
0 100.0
1 20.0
2 10.0
Name: a, dtype: float64
```

Explanation: First divide by 100 since we’re dealing with percentages. Then find cumulative product of the series. Finally multiply by 1000 which is your starting value.

```
df['b'] = (df['a'] / 100).cumprod() * 1000
df
a b
0 10 100.0
1 20 20.0
2 50 10.0
```