我有两个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。我不知道它为什么会发生。任何提示都将受到高度赞赏。
答案 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)