2016-05-31 4 views
1

私はそのようなものがあり、DFがあります乗算2 2つのその他の列に基づいてDFのサブセットのpythonパンダ

df 
Out[177]: 
       IV maturity strike 
date        
2000-12-29 0.435  0.083 0.600 
2000-12-29 0.390  0.083 0.700 
2000-12-29 0.331  0.083 0.800 
2000-12-29 0.283  0.083 0.900 
2000-12-29 0.391  0.250 0.600 
2000-12-29 0.349  0.250 0.700 
2000-12-29 0.304  0.250 0.800 
2000-12-29 0.268  0.250 0.900 

私は成熟度= 0とIVは、との積に等しい4つの新しい行を作成しようとしていますがIV:成熟度== 0.083 IVと成熟度== 0.25 IVと「ストライク」はこのように一致します(例:ストライキ0.6のIVと成熟0.083は0.435、ストライキ0.6の0.391の成熟度は0.25です)ので0.391 * 0.435

あなたは助けるために
Out[177]: 
        IV maturity strike 
    date        
    2000-12-29 0.435  0.083 0.600 
    2000-12-29 0.390  0.083 0.700 
    2000-12-29 0.331  0.083 0.800 
    2000-12-29 0.283  0.083 0.900 
    2000-12-29 0.391  0.250 0.600 
    2000-12-29 0.349  0.250 0.700 
    2000-12-29 0.304  0.250 0.800 
    2000-12-29 0.268  0.250 0.900 
    2000-12-29 0.170  0.000 0.600 
    2000-12-29 0.136  0.000 0.700 
    2000-12-29 0.101  0.000 0.800 
    2000-12-29 0.758  0.000 0.900 

感謝!

答えて

1

pivotを使用し、ilocから新しい列0で選択された複数の第1列と第2列を使用できます。 reset_indexと最終unstack

df1 = (df.pivot(index='strike', columns='maturity', values='IV')) 

df1.loc[:,0] = df1.iloc[:,0] * df1.iloc[:,1] 

print (df1.unstack().reset_index(name='IV')) 
    maturity strike  IV 
0  0.083  0.6 0.435000 
1  0.083  0.7 0.390000 
2  0.083  0.8 0.331000 
3  0.083  0.9 0.283000 
4  0.250  0.6 0.391000 
5  0.250  0.7 0.349000 
6  0.250  0.8 0.304000 
7  0.250  0.9 0.268000 
8  0.000  0.6 0.170085 
9  0.000  0.7 0.136110 
10  0.000  0.8 0.100624 
11  0.000  0.9 0.075844 
+0

非常に有用なのは、あなたに感謝! –

関連する問題