通过列值比较两个pandas数据帧的行

时间:2017-07-19 23:06:45

标签: python pandas dataframe

我有两个数据框,代表从两个不同的计步器中提取的数据,这些计步器记录特定月份某个人跑了多少英里。

我想计算DF 1和DF 2中具有相同“年份”“人物”的行的“里程运行”的差异。例如,DF 1和DF 2具有Joe在1月份运行的里程以及Bob在2月份运行的里程。对于这两个常见行,我想计算两个“Miles Run”的不同之处。

知道如何从两个具有2个匹配列值的DF中提取行吗?

DF 1:

Month of Year   Miles Run   Person 
   January      6.7458      Joe 
   February     1.3808      Bob
   March        11.2689     Jill  
   April        9.8917      Sarah  

DF 2:

Month of Year   Miles Run   Person 
   November     5.5234      Andrew 
   December     7.4523      Kyle
   January      9.1189      Joe  
   February     7.4343      Bob

1 个答案:

答案 0 :(得分:2)

使用set_index并让Pandas使用内部数据对齐来执行减法:

(DF1.set_index(['Month of Year','Person']) - DF2.set_index(['Month of Year','Person'])).fillna(0)

输出:

                      Miles Run
Month of Year Person           
April         Sarah      0.0000
December      Kyle       0.0000
February      Bob       -6.0535
January       Joe       -2.3731
March         Jill       0.0000
November      Andrew     0.0000