Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/357.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 基于多索引的两个数据帧相减_Python_Pandas - Fatal编程技术网

Python 基于多索引的两个数据帧相减

Python 基于多索引的两个数据帧相减,python,pandas,Python,Pandas,我有两个dfs,我想根据多个索引进行减法 利润 Company Product Amount Google Pixel 2 3000 Microsoft Window 10 4000 Amazon AWS 10000 成本 Company Product Amount Google Pixel 2 10000 Microsoft Window 10 1000 ASUS Router 50000 我想

我有两个dfs,我想根据多个索引进行减法

利润

Company    Product   Amount
Google     Pixel 2   3000
Microsoft  Window 10 4000
Amazon     AWS       10000
成本

Company    Product    Amount
Google     Pixel 2    10000
Microsoft  Window 10  1000
ASUS       Router     50000
我想生成一个如下所示的数据帧

差分

Company    Product    Difference
Google     Pixel 2    -7000
Microsoft  Window 10  3000
Amazon     AWS        10000
ASUS       Router     -50000
我试过了

profitDf.set_index(['Company','Product']).sub(costDf.set_index(['Company','Product']), fill_value=0).reset_index()
但它显示了
NotImplementedError:未实现与两个多索引的合并


感谢您的帮助

,因为它是使用
合并的多索引

pdf.merge(cdf,on=['Company','Product'],how='outer').fillna(0).eval('Diff=Amount_x-Amount_y')
Out[205]: 
     Company   Product  Amount_x  Amount_y     Diff
0     Google    Pixel2    3000.0   10000.0  -7000.0
1  Microsoft  Window10    4000.0    1000.0   3000.0
2     Amazon       AWS   10000.0       0.0  10000.0
3       ASUS    Router       0.0   50000.0 -50000.0
或者使用
pivot

pdf.pivot(*pdf.columns).sub(cdf.pivot(*cdf.columns),fill_value=0).stack()
Out[218]: 
Company    Product 
ASUS       Router     -50000.0
Amazon     AWS         10000.0
Google     Pixel2      -7000.0
Microsoft  Window10     3000.0
dtype: float64