2015-02-09 22 views
5

Tôi đang cố gắng trừ hai DataFrames lại với nhau. Tôi muốn xem những giá trị thiếu như 0. fillna() sẽ không làm việc ở đây vì tôi không biết các chỉ số thông thường trước khi thực hiện phép trừ:Trừ hai DataFrames với các chỉ mục không chồng chéo

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 

Lý tưởng nhất, tôi muốn có:

A - B 

    0 
a -2 
b 2 
c -4 

Có thể nhận được điều đó trong khi vẫn giữ mã đơn giản không?

Trả lời

5

Bạn có thể sử dụng phương pháp subtract và chỉ định một fill_value của zero:

A.subtract(B, fill_value=0) 

Lưu ý: phương pháp dưới đây, combineAdd, is deprecated từ 0.17.0 trở đi.

Một cách là sử dụng phương pháp combineAdd thêm -B-A:

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

Với phương pháp này, hai DataFrames được thêm vào và các giá trị tại phi phù hợp với các chỉ số mặc định với giá trị trong cả hai A hoặc B.

Các vấn đề liên quan