Python 基于其他两列乘以df的2个子集
我有一个df,它有:Python 基于其他两列乘以df的2个子集,python,pandas,Python,Pandas,我有一个df,它有: 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.39
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
我试图创建4个新行,其中到期日=0,IV等于IV的乘积,其中到期日=0.083,IV和到期日=0.25,IV和“罢工”匹配在一起,例如:罢工0.6的IV和罢工0.083的IV是0.435,罢工0.6的IV是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
感谢您的帮助!您可以使用,然后选择多个第一列和第二列以创建新列0
。最后使用:
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