如何比较大熊猫中的数据框?

时间:2019-10-21 14:56:07

标签: python pandas dataframe comparison difference

我有两个这样的数据框:

DF1:

ID     v1           v2         v3
289  1455.0        2.0        0.62239  
289  1460.0        0.0        0.46037  
289  1465.0        4.0        0.41280 
290  1470.0        0.0        0.39540 
290  1475.0        2.0        0.61809 
290  1475.0        2.0        0.61809

DF2:

ID     v1           v2         v3
289  1423.0        2.0        0.62239  
289  142Q.0        0.0        0.46037  
289  14FW.0        4.0        0.41280  
290  14Q3.0        0.0        0.39540  
290  1453.0        2.0        0.61809 
290  1454.0        2.0        0.61809

我想比较包含相同ID的行作为整体(即:当我比较两个df之间的前三行时,我不在乎该行的顺序,只想对不同的值进行优化),现在我的方法给了我逐行比较的结果,这可能有问题:

如果df1的第一行与df2的第二行相同, df1的第三行与df2的第一行相同, 并且df1的第二行与df2的第三行相同,这意味着前三行相同, 但是通过使用我的方法(逐行比较),它给了我每一行之间的区别。

有人可以帮我吗?非常感谢。

这是我尝试过的错误:

resultBool01 = (DF1 != DF2).stack()  # Create Frame of comparison booleans
resultdiff01 = pd.concat([DF1.stack()[resultBool01], DF2.stack()[resultBool01]], axis=1)
resultdiff01.columns=["output_01", "output_02"]

ValueError: cannot handle a non-unique multi-index!

预期结果:(每个ID的值不同)

ID   difvar  output1     output2
289   v1       1455       1423

0 个答案:

没有答案