2015-02-09 5 views
5

Я пытаюсь вычесть два DataFrames вместе. Я хотел бы, чтобы рассматривать пропущенные значения в 0. fillna() не будет работать здесь, потому что я не знаю, общие индексы, прежде чем делать вычитание:Вычесть два DataFrames с неперекрывающимися индексами

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 

Можно ли получить это, сохраняя код простым?

ответ

5

Вы можете использовать метод subtract и указать fill_value нуля:

A.subtract(B, fill_value=0) 

Примечание: метод ниже, combineAdd, is deprecated от 0.17.0 года.

Один из способов заключается в использовании метода combineAdd добавить -B к A:

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

С помощью этого метода, добавляются два DataFrames и значения в несоответствующий индексы по умолчанию к значению в любом A или B.

Смежные вопросы