从不同的DataFrame中减去值

时间:2016-08-11 19:09:57

标签: python pandas

我有两个DataFrame并希望减去。

DF1:

              Val1         Val2      Val3       
0  -27 -0.8  -6.786321    -7.024615 -13.946589  
1  -27 -0.9  -5.746795    -5.804550 -11.576365  
2  -27 -1.0  -4.624857    -4.372321  -9.103681  
3  -27 -1.2  -2.685832    -2.418888  -5.057056  
4  -27 -1.4  -1.445561    -1.389468  -2.622357  

DF2:

       Bench
0      0.4601
1     -5.3336
2     -6.0163
3     -4.1776
4     -2.3472

由于我有相同的索引,我尝试过:df1-df2,但它没有用。

因此,我试图用另一种方式:

   headers = list(df1.columns.values)
   filtr_headers = filter(lambda x: x!='',headers)
         for i in filtr_headers:
                df1['%s' %(i)] = df1['%s' %(i)] - df2['Bench']

但我正在使用NaN值返回Dataframe。我不知道它为什么会发生。任何提示都将受到高度赞赏。

2 个答案:

答案 0 :(得分:1)

您可以使用pd.DataFrame.sub,如下所示:

In [113]: df1.sub(df2.Bench.values, axis=0)
Out[113]: 
                Val1      Val2       Val3
0 -27 -0.8 -7.246421 -7.484715 -14.406689
1 -27 -0.9 -0.413195 -0.470950  -6.242765
2 -27 -1.0  1.391443  1.643979  -3.087381
3 -27 -1.2  1.491768  1.758712  -0.879456
4 -27 -1.4  0.901639  0.957732  -0.275157

答案 1 :(得分:0)

您可以使用

pd.DataFrame(df1.values - df2.values)