2013-04-10 69 views
1

功能我有行與用於期權定價模型中的參數數據幀,以便:電子表格等中熊貓

df.Spot是柱,用現貨價格

df.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我的功能,只能在浮動計算不起作用。 必須是一個簡單的方法,只需將函數應用到一排熊貓中的元素中?

有什麼建議嗎?

回答

2

我認爲最簡單的方法是稍微改變你的函數(或使用的包裝功能,如下),使其接受每個數據幀row作爲參數:

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

然後你可以apply這個(行 - 方向):

apply(blsimpv_, axis=1)