1 回答

TA貢獻1853條經驗 獲得超6個贊
這是我的解決方案,我認為很難將其矢量化
l=[]
for x , y in df.groupby('Variable',sort=False):
#print(y)
l1=[]
for s,t in y.iterrows():
if len(l1)==0:
l1.append(t['Causal'])
else:
l1.append(t['Causal'] + 0.5**(1/t['Half_Life'])*l1[-1])
l.extend(l1)
df['New']=l
df
Out[982]:
Variable Date Causal Half_Life New
0 TVModel 2016-01-10 0 4 0.000000
1 TVModel 2016-01-17 0 4 0.000000
2 TVModel 2016-01-24 0 4 0.000000
3 TVModel 2016-01-31 100 4 100.000000
4 TVModel 2016-02-07 110 4 194.089642
5 TVModel 2016-02-14 89 4 252.209284
6 TVModel 2016-02-21 57 4 269.081883
7 TVModel 2016-02-28 90 4 316.269991
8 TVGeneral 2016-01-10 0 4 0.000000
9 TVGeneral 2016-01-17 0 4 0.000000
10 TVGeneral 2016-01-24 0 4 0.000000
11 TVGeneral 2016-01-31 30 4 30.000000
12 TVGeneral 2016-02-07 32 4 57.226892
13 TVGeneral 2016-02-14 42 4 90.121889
14 TVGeneral 2016-02-21 39 4 114.783173
15 TVGeneral 2016-02-28 55 4 151.520759
添加回答
舉報