2016-12-06 61 views
3

DF1:减去2个dataframes

City, 2015-12-31, 2016-01-31, ... 
YYZ 562.14, -701.18, ... 
DFW 562.14, -701.18, ... 
YYC 562.14, -701.18, ... 

DF2:

City, 2015-12-31, 2016-01-31, ... 
SFO 562.14, -701.18, ... 
PDX 562.14, -701.18, ... 
LAX 562.14, -701.18, ... 

我想从DF2减去DF1。即减去各个日期栏中的值。

我试过如下:

df2.subtract(df1, fill_value=0) 

但我收到以下错误:

TypeError: unsupported operand type(s) for -: 'str' and 'float' 

我认为错误是因为操作无法理解如何减去字符串City列,这显然是有道理的,因为减去城市是荒谬的。

在这篇文章中接受的答案[link]似乎表明这是可能的。我是这个问题的作者,但似乎无法立即开始工作。

回答

4

将城市列移入索引。 DataFrame会先按索引和列对齐,然后再进行减法。任何不存在的组合都将导致NaN

df2.set_index('City').subtract(df1.set_index('City'), fill_value=0) 
0

这是行不通的吗?

df2.drop(['City']).subtract(df1.drop(['City']))