Prefer showing diffs at the row level

pull/153/head
Frh 2020-04-22 14:50:45 -07:00
parent 549ab0ebe6
commit db645627ff
1 changed files with 25 additions and 25 deletions

View File

@ -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")