【发布时间】:2020-08-09 00:08:39
【问题描述】:
我的原始数据是:
def f_ST(ST,F,T):
a=ST/F-1-np.log(ST/F)
return 2*a/T
df=pd.DataFrame(range(50,140,5),columns=['K'])
df['f(K0)']=df.apply(lambda x: f_ST(x.K,100,0.25),axis=1)
df['f(K1)']=df['f(K0)'].shift(-1)
df['dK']=df['K'].diff(1)
我想做的是:我有一个函数 f(k)
f(k)= (k-100)/100 - ln(k/100)
我想计算 w,按照步骤进行
- 得到f(k)的1周期前向值,然后计算
tmp(k)=f1_f(k)-f(k)/dk
- w 计算为
w[0]=tmpw[0]
w[n]-tmpw[n]-(w[0]+w[1]+...w[n-1])
结果看起来像
nbr date k f(k) f1_f(k) d_k tmpw w
10 2019-02-19 100 0.000000 0.009679 5.0 0.001936 0.001936
11 2019-02-19 105 0.009679 0.037519 5.0 0.005568 0.003632
12 2019-02-19 110 0.037519 0.081904 5.0 0.008877 0.003309
13 2019-02-19 115 0.081904 0.141428 5.0 ...
14 2019-02-19 120 0.141428 0.214852 5.0 ...
15 2019-02-19 125 0.214852 0.301086 5.0
16 2019-02-19 130 0.301086 0.399163 5.0
问题:任何人都可以在不使用循环的情况下帮助推导出一个快速代码(不是数学上的)吗?
非常感谢!
【问题讨论】:
-
w[n] = tmpw[n]-(w[0]+w[1]+...w[n-1])
标签: python dataframe dynamic sum average