减去两个Pandas Dataframes

时间:2015-11-15 20:10:30

标签: python numpy pandas

我有两个从csv文件中读取的pandas数据帧:

tmp1=pandas.read_csv(pathDataset1, parse_dates = [0],index_col=0, date_parser=parser)
tmp2=pandas.read_csv(pathDataset2, parse_dates = [0],index_col=0, date_parser=parser)
print tmp1 
      #index     #A
 1.296518e+12  443
1.298938e+12  433
1.301616e+12  463
1.304208e+12  483
1.306886e+12  433
1.309478e+12  413
1.312157e+12  403

print tmp2
      #index    #A
1.298938e+12  403
1.301616e+12  483

我希望在我的A列上得到我的两个数据帧之间的差异所以我可以得到这样的输出:

1.298938e+12  30
1.301616e+12  -20

我已经设法用numpy.substract来获得这个结果但是只有当这两个数组的tmp1.values和tmp2.values形状相同时才会这样,而且对我来说并非总是如此。

1 个答案:

答案 0 :(得分:1)

即使两个DataFrame的形状不同,

tmp1.subtract(tmp2)也能正常工作:

tmp1 = pd.DataFrame({'A': {1296518000000.0: 443, 1298938000000.0: 433,
                           1301616000000.0: 463, 1304208000000.0: 483,
                           1306886000000.0: 433, 1309478000000.0: 413,
                           1312157000000.0: 403}})
tmp2 = pd.DataFrame({'A': {1298938000000.0: 403, 1301616000000.0: 483}})
print(tmp1.subtract(tmp2).dropna())

产量

               A
index           
1.298938e+12  30
1.301616e+12 -20