我的数据框中包含行选项定价模型的参数:
df.Spot是现货价格
的列df.Strike是罢工价格的专栏,
等
我有一个函数blsimpv(spot, strike, rf, dy, T, price, w)
,用给定参数计算期权的隐含波动率。所有参数都在数据帧中。 blsimpv
函数只接受值的单个输入。
想要通过将值传递给函数来在pandas数据框中创建新列。
df['vol']= df.applymap(blsimpv( df.spot, df.strike, df.rf, df.dy, df.T,
df.MTMPrice, df.w))
不能正常工作,因为它将pd.series
传递给我的函数,该函数只能在浮点数上计算。
必须是一个简单的方法,只需将函数应用于pandas中的行中的元素吗?
有什么建议吗?
答案 0 :(得分:2)
我认为最简单的方法是稍微改变你的函数(或使用包装器函数,如下所示),以便它接受每个DataFrame row
作为参数:
def blsimpv_(row):
blsimpv(row['spot'], row['strike'], row['rf'], row['dy'], row['T'], row['price'], row['w'])
然后你可以apply
这个(按行):
apply(blsimpv_, axis=1)