如何比较两个未排序的数据框并报告差异

时间:2019-02-27 23:39:28

标签: python-3.x pandas sorting dataframe compare

我想比较两个未排序的数据框,并按列和行ID坐标和值报告差异。

代码首先比较CSV,如果不相等,则基于合并进行比较,如果仍然不相等,我知道数据在某些方面有所不同。

在这一点上,我不确定如何识别列和行坐标以及每个数据帧的值,其中数据被标识为不同。

以下是数据框:

数据帧1-EXP:
enter image description here

DATAFRAME 2-ACT:
enter image description here

这是我当前的代码:

import pandas as pd
file1 = "c:\\exp.csv"
file2 = "c:\\act.csv"
exp = pd.read_csv(file1, encoding="ANSI")
act = pd.read_csv(file2, encoding="ANSI")
exp = exp.drop_duplicates(subset=None, keep='first', inplace=False)
act = act.drop_duplicates(subset=None, keep='first', inplace=False)
result = exp.equals(act)
if result:
    print("CSV's Match")
else:
    act = act.set_index('accounts')
    dataMerged = exp.merge(act, how='left')
    dataMergedAndSorted = dataMerged.sort_values(['accounts']).set_index('account numbers')
    actSorted = act.sort_values(['accounts'])
    if dataMergedAndSorted.equals(actSorted):          
         print("The Merged, Sorted, and Compared Data Now Returns True : PASS")
    else:
         dataMergedAndSorted = dataMergedAndSorted.reset_index() 
         actSorted = actSorted.reset_index()

通过观察数据框了解已知差异以及如何进行报告:

  

Exp:Col = 1,Row = 4,Val = 9101,Act:Col = 1,Row = 3,Val = FOO

     

Exp:Col = 3,Row = 6,Val = BAR,Act:Col = 3,Row = 5,Val = malfoy

0 个答案:

没有答案