Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Iterate using previous rows

How could I create a col2 using an iterative type of rule?

col2 = col1 + 0.1(col2's previous value). If there is no previous value (here in 20 Dec 2019), then col2 should equal col1

df
  date      col1   
2019-12-20   10      
2019-12-27   3       
2020-01-03   7

Expected Output

  date      col1  col2  
2019-12-20   10     10   (no previous value, so equal col1)
2019-12-27   3      4    (3+0.1*10)
2020-01-03   7      7.4  (7+0.1*4)
like image 490
asd Avatar asked Feb 06 '26 19:02

asd


1 Answers

Use np.cumsum (inspired by the formula of @MustafaAydın)

p = 0.1 ** np.arange(len(df)-1, -1, -1)
df['col2'] = np.cumsum(p * df['col1']) / p
>>> df
         date  col1  col2
0  2019-12-20    10  10.0
1  2019-12-27     3   4.0
2  2020-01-03     7   7.4
like image 116
Corralien Avatar answered Feb 09 '26 12:02

Corralien