Наглядный способ визуализации разницы в двух таблицах
Рассмотрим, простой метод получения разницы в двух датафреймах. Он идеально подойдет, когда надо убедиться в правильности примененных к таблице преобразований. Создадим демонстрационный датасет:
import pandas as pd df1 = pd.DataFrame([['id1', 'val1', 'cat1'], ['id2', 'val2', 'cat2'], ['id3', 'val3', 'cat3'], ['id4', 'val4', 'cat4']], columns=['id', 'val', 'cat']) df1
Создадим копию таблицы и внесем некоторые изменения:
df2 = df1.copy() df2.loc[3,'id'] = 'id4_new' df2.loc[2,'val'] = 'val3_new'
Теперь воспользуемся методом compare:
df1.compare(df2)
С параметрами по умолчанию compare показывает только строки и колонки с различающимися значениями. При этом для каждого столбца слева (self) указывается значение первого датафрейма в заданной строке, а справа (other) - второго. NaN обозначают равные значения.
С параметром keep_equal=True в итоговом датафрейме вместо NaN-ов будут реальные значения:
df1.compare(df2, keep_equal=True)
С keep_shape=True результат будет включать все строки и колонки, а не только различающиеся:
df1.compare(df2, keep_shape=True)
Также можно задать имена подстолбцов, в которых будут содержаться значения ячеек левого и правого датафрейма вместо наименований по умолчанию - 'self', 'other'. Это регулируется параметром result_names:
df1.compare(df2, result_names=('df1', 'df2'))