Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/333.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 基于其他两列乘以df的2个子集_Python_Pandas - Fatal编程技术网

Python 基于其他两列乘以df的2个子集

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,它有:

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