我目前有一个数据框如下:
并希望添加一个基于以下函数计算的列E.
def geometric_brownian_motion(T = 1, N = 100, mu = 0.1, sigma = 0.01, S0 = 20):
dt = float(T)/N
t = np.linspace(0, T, N)
W = np.random.standard_normal(size = N)
W = np.cumsum(W)*np.sqrt(dt) ### standard brownian motion ###
X = (mu-0.5*sigma**2)*t + sigma*W
S = S0*np.exp(X) ### geometric brownian motion ###
return S
(源自here)
如何为数据框中包含的所有日期创建时间序列并附加它?
函数输入参数如下:
T =(df第1行和最后一次df之间的#days)/ 365
N =数据框中的#行
S0 = 100
答案 0 :(得分:2)
据我所知,问题的本质是如何将一些方法应用于每一列,考虑到,要计算一个新值,你需要一个来自dataframe的索引:
我建议您将索引作为单独的列提取,并且通常使用apply。
from functools import partial
df['index'] = df.index
T = # precalculate T here
N = df.shape[0]
applying_method = partial(geometric_brownian_motion,T=T,N=N, S0=100)
df['E'] = df.apply(lambda row: applying_method(*row),axis=1)
或者,如果您重命名数据帧的列,这些列包含在您的函数参数中:
df['E'] = df.apply(lambda row: applying_method(**row),axis=1)
希望有所帮助。