Python 将创建的函数列追加到现有数据框

Python 将创建的函数列追加到现有数据框,python,numpy,Python,Numpy,我目前有一个数据帧,如下所示: 并希望添加一列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) ### sta

我目前有一个数据帧,如下所示:

并希望添加一列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
(起源于)

如何为数据框中包含的所有日期创建时间序列并附加它

功能输入参数如下所示:

T=(#df第1行和df最后一行之间的天数)/365

N=#数据帧中的行


S0=100

据我所知,问题的实质是如何对每一列应用某种方法,同时考虑到要计算一个新值,您需要一个来自数据帧的索引:

我建议您将索引提取为单独的列,并像往常一样使用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)
或者,如果根据函数参数重命名dataframe的列:

df['E'] = df.apply(lambda row: applying_method(**row),axis=1)

希望能有所帮助。

谢谢您的回复。实际上,我并不想将函数应用于每一列,只是想根据索引中的日期和上面的函数为列[E]创建一个时间序列。我更新了答案@S.Peters。如果您重命名原始dataframe中的列,使它们与函数的参数匹配,我可以对其进行改进,并描述如何应用您的函数。更新了函数输入定义的问题。抱歉,但我仍然对dataframe列与函数参数的关系感到困惑。数据帧的“A”、“B”、“C”、“D”是什么意思?请将其命名为与函数参数相同的名称。它们只是现有列,唯一的相关性是我需要使用现有日期为列E创建时间序列。基本上尝试复制上面链接中的示例,而不是将其应用于一系列日期,将其应用于现有数据框中的日期,并将结果添加为列。“起始价格=100”如何?在函数中看不到。抱歉,修改为S0