首页 > 解决方案 > 如何在熊猫中将数据框作为一个小组进行比较?

问题描述

我有两个这样的数据框:

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的第1行与df2的第2行相同,df1的第3行与df2的第1行相同,df1的第2行与df2的第3行相同,这意味着前三行是相同的,但是通过使用我的方法(逐行比较),它给了我每行之间的差异。

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

这是我尝试的方法和错误:

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

标签: pythonpandasdataframecomparisondifference

解决方案


推荐阅读