2016-12-06 60 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']))