2017-06-13 89 views
0

我有一個DataFrame df1與列ABD減去不同列的數據框

| A | B | D | 
------------- 
| 1 | 5 | 3 | 
| 2 | 3 | 1 | 

和一個數據幀df2使用列BC

| B | C | 
--------- 
| 0 | 2 | 
| 3 | 5 | 

它們具有相同的行數。

我想將它們按照小數點減去(df1 - df2)。但是他們每個人都有另一個沒有的專欄。

得到的數據幀我的目標看起來像這樣:

| A | B | C | D | 
------------------ 
| 1 | 5 | -2 | 3 | 
| 2 | 0 | -5 | 1 | 

這是很容易可能嗎?

回答

3

你可以先align兩個數據幀的列索引,填補缺失的零值,然後做減法(假設兩個數據幀具有相同的行索引):

df1, df2 = df1.align(df2, fill_value=0)  
df1 - df2 
# A B C D 
#0 1 5 -2 3 
#1 2 0 -5 1 

或者使用combine方法:

df1.combine(df2, pd.Series.sub, fill_value=0) 
# A B  C D 
#0 1 5 -2.0 3 
#1 2 0 -5.0 1