From db645627fff0ff7ac4421b4e36bf9eb08bd101e0 Mon Sep 17 00:00:00 2001 From: Frh Date: Wed, 22 Apr 2020 14:50:45 -0700 Subject: [PATCH] Prefer showing diffs at the row level --- camelot/utils.py | 50 ++++++++++++++++++++++++------------------------ 1 file changed, 25 insertions(+), 25 deletions(-) diff --git a/camelot/utils.py b/camelot/utils.py index b2333dc..dcd0e4e 100644 --- a/camelot/utils.py +++ b/camelot/utils.py @@ -1124,7 +1124,31 @@ def compare_tables(left, right): table1, table2 = [left, right] name_table1, name_table2 = ["left", "right"] - if not diff_rows: + if not diff_cols: + # Same number of cols: compare rows since they're of the same length + if diff_rows > 0: + # Use the longest table as a reference + table1, table2 = table2, table1 + name_table1, name_table2 = name_table2, name_table1 + for index, lrow in table1.iterrows(): + if index < table2.shape[0]: + srow = table2.loc[index, :] + if not lrow.equals(srow): + diff_df = pd.DataFrame() + diff_df = diff_df.append(lrow, ignore_index=True) + diff_df = diff_df.append(srow, ignore_index=True) + diff_df.insert(0, 'Table', [name_table1, name_table2]) + print("Row {index} differs:".format(index=index)) + print(diff_df.values) + break + else: + print("Row {index} unique to {name_table1}: {lrow}".format( + index=index, + name_table1=name_table1, + lrow=lrow + )) + break + elif not diff_rows: # Same number of rows: compare columns since they're of the same length if diff_cols > 0: # Use the longest table as a reference @@ -1150,29 +1174,5 @@ def compare_tables(left, right): else: print("Column {i} unique to {name_table1}: {lcol}") break - elif not diff_cols: - # Same number of cols: compare rows since they're of the same length - if diff_rows > 0: - # Use the longest table as a reference - table1, table2 = table2, table1 - name_table1, name_table2 = name_table2, name_table1 - for index, lrow in table1.iterrows(): - if index < table2.shape[0]: - srow = table2.loc[index, :] - if not lrow.equals(srow): - diff_df = pd.DataFrame() - diff_df = diff_df.append(lrow, ignore_index=True) - diff_df = diff_df.append(srow, ignore_index=True) - diff_df.insert(0, 'Table', [name_table1, name_table2]) - print("Row {index} differs:".format(index=index)) - print(diff_df.values) - break - else: - print("Row {index} unique to {name_table1}: {lrow}".format( - index=index, - name_table1=name_table1, - lrow=lrow - )) - break else: print("Tables have different shapes")