将函数创建列附加到现有数据框

时间:2017-09-05 13:44:23

标签: python numpy

我目前有一个数据框如下:

enter image description here

并希望添加一个基于以下函数计算的列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

1 个答案:

答案 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)

希望有所帮助。