У меня есть следующий фрейм данных:
import numpy as np
import pandas as pd
dates = pd.date_range(start='2014-01-01',end='2018-01-01', freq='Y')
df = pd.DataFrame(5*np.eye(4,), index=dates, columns=['Var1', 'Var2', 'Var3', 'Var4'])
print(df)
Var1 Var2 Var3 Var4
2014-12-31 5.0 0.0 0.0 0.0
2015-12-31 0.0 5.0 0.0 0.0
2016-12-31 0.0 0.0 5.0 0.0
2017-12-31 0.0 0.0 0.0 5.0
Я бы хотел вычислить значение NPV каждой переменной для 2014 и 2015 годов за 3 года.
Сейчас я знаю, какчтобы получить текущее значение для одной переменной и одной строки за раз:
Var1_2014 = df.loc['2014':'2016','Var1'].tolist()
NPV_Var1_2014 = np.npv(0.7,[0]+Var1_2014)
Однако я не знаю, как векторизовать функцию для вычисления непосредственно всего столбца.Я хотел бы получить что-то вроде этого:
Var1 Var2 Var3 Var4 Var1_NPV
2014-12-31 5.0 0.0 0.0 0.0 a
2015-12-31 0.0 5.0 0.0 0.0 b
2016-12-31 0.0 0.0 5.0 0.0 Nan
2017-12-31 0.0 0.0 0.0 5.0 Nan
, где я мог бы сказать что-то вроде df['Var1_NPV']= npv('Var1',duration=3years,discount_rate=0.7)
Любая идея о том, как я мог бы эффективно векторизовать эту функцию?
Большое спасибо,