2017-06-13 50 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