我想比较两个未排序的数据框,并按列和行ID坐标和值报告差异。
代码首先比较CSV,如果不相等,则基于合并进行比较,如果仍然不相等,我知道数据在某些方面有所不同。
在这一点上,我不确定如何识别列和行坐标以及每个数据帧的值,其中数据被标识为不同。
这是我当前的代码:
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