使用非重叠索引减去两个DataFrame

syn*_*ski 7 python subtraction dataframe pandas

我试图一起减去两个DataFrame.我想将缺失值视为0. fillna()在这里不起作用,因为在进行减法之前我不知道常用索引:

import pandas as pd

A = pd.DataFrame([1,2], index=['a','b'])
B = pd.DataFrame([3,4], index=['a','c'])
A - B

    0
a  -2
b NaN
c NaN
Run Code Online (Sandbox Code Playgroud)

理想情况下,我希望:

A - B

    0
a  -2
b   2
c  -4
Run Code Online (Sandbox Code Playgroud)

是否可以在保持代码简单的同时实现这一目标?

Ale*_*ley 7

您可以使用该subtract方法并指定fill_value零:

A.subtract(B, fill_value=0)
Run Code Online (Sandbox Code Playgroud)

注意:下面的方法combineAdd,已被弃用从0.17.0或更新开始.

一种方法是使用该combineAdd方法添加-BA:

>>> A.combineAdd(-B)
   0
a -2
b  2
c -4
Run Code Online (Sandbox Code Playgroud)

使用此方法,将添加两个DataFrame,并且非匹配索引处的值默认为A或者中的值B.