减去两个索引不重叠的 DataFrame

Subtract two DataFrames with non overlapping indexes

我正在尝试将两个 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

理想情况下,我想要:

A - B

    0
a  -2
b   2
c  -4

是否有可能在保持代码简单的同时获得它?

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

A.subtract(B, fill_value=0)

注意:下面的方法,combineAddis deprecated从0.17.0开始

一种方法是使用combineAdd方法将-B添加到A:

>>> A.combineAdd(-B)
   0
a -2
b  2
c -4

使用此方法,添加两个 DataFrame,并且不匹配索引处的值默认为 AB 中的值。