2015-02-09 5 views
5

Ich versuche, zwei DataFrames zusammen zu subtrahieren. Ich möchte fehlende Werte behandeln, als 0. fillna() wird hier nicht arbeiten, weil ich weiß nicht, die gemeinsamen Indizes vor der Subtraktion tun:Subtrahieren Sie zwei DataFrames mit nicht überlappenden Indizes

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 

Idealerweise würde ich gerne haben:

A - B 

    0 
a -2 
b 2 
c -4 

Ist es möglich, den Code einfach zu halten?

Antwort

5

können Sie die subtract Methode verwenden, und geben Sie eine fill_value von Null:

A.subtract(B, fill_value=0) 

Hinweis: Um die folgenden Verfahren, combineAdd, is deprecated von 0.17.0 ab.

Eine Möglichkeit ist es, die combineAdd Methode verwenden -B zu A hinzuzufügen:

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

Mit diesem Verfahren werden die zwei Datenrahmen hinzugefügt werden, und die Werte bei in Indizes Standard auf den Wert Nicht-Übereinstimmungs entweder A oder B.