import pandas as pd
df = pd.DataFrame({
'time' : [0,1,2,3,4,5],
'disc_fact' : [0.99,0.87,0.74,0.64,0.54,0.44],
'exp_man' : [0,100,95.45,93.11,87.46,81.77],
'pv_exp_man' : [204.211875, 206.274622, 137.097266, 89.816576, 47.228400, 0.000000]
})
Формула:
- pv_exp_main(time) = 0, если time = 5
- pv_exp_main(time) = [pv_exp_man(time+1) + exp_man(time)] * disk_fact(time), если time < 5
Циклический подход:
for k in range(len(df)-1,-1,-1):
if k == len(df)-1:
df.loc[df.time == k, 'pv_exp_man'] = 0.0
else:
df.loc[df.time == k, 'pv_exp_man'] = df.loc[df.time == k, 'disc_fact'].values[0] * (df.loc[df.time == k, 'exp_man'].values[0]+df.loc[df.time.isin([k+1]), 'pv_exp_man'].values[0])
Подробнее здесь: https://stackoverflow.com/questions/790 ... n-approach