1

我有数据框,其中包含行中的期权定价模型的参数,因此:

df.Spot 是包含现货价格的列

df.Strike 是带有 Strike 价格的列,

等等

我有一个函数blsimpv(spot, strike, rf, dy, T, price, w)可以计算具有给定参数的期权的隐含波动率。所有参数都存在于数据框中。该blsimpv函数仅接受值的单个输入。

想要通过将值传递给函数来在熊猫数据框中创建新列。

df['vol']= df.applymap(blsimpv( df.spot, df.strike,  df.rf, df.dy, df.T,
                            df.MTMPrice, df.w))

不起作用,因为它传递pd.series给我只能在浮点数上计算的函数。必须是一种将函数应用于熊猫中连续元素的简单方法吗?

有什么建议么?

4

1 回答 1

2

我认为最简单的方法是稍微更改您的函数(或使用包装函数,如下所示),以便它接受每个 DataFramerow作为参数:

def blsimpv_(row):
    blsimpv(row['spot'], row['strike'], row['rf'], row['dy'], row['T'], row['price'], row['w'])

然后你可以apply这样做(按行):

apply(blsimpv_, axis=1)
于 2013-04-10T09:06:03.797 回答