2016-05-31 3 views
1

ich ein df so haben muss:multiplizieren 2 Teilmenge eines df basierend auf 2 anderen Spalte Python Pandas

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 

Ich versuche, 4 neue Zeilen zu erstellen, wo Reif = 0 und IV zu dem Produkt von gleich IV mit Fälligkeit == 0,083 IV und Fälligkeit == 0,25 IV und Strike zusammenpassen (Beispiel: IV für Strike 0.6 und und Laufzeit 0.083 ist 0.435 und IV für Laufzeit 0.25 für Strike 0.6 us 0.391, also 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 

dank für Sie Hilfe!

Antwort

1

Sie können pivot verwenden, dann mehrere erste und zweite Spalte, die von iloc ausgewählt wurden, in die neue Spalte 0. Letzte unstack mit reset_index:

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

sehr nützlich danke! –

Verwandte Themen