РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
86 of 687 menu

Метод compare

Метод compare применяется к DataFrame и сравнивает его с другим DataFrame. В результате возвращается новый DataFrame, показывающий различия между исходными таблицами. Первым параметром передаётся другой DataFrame для сравнения. Вторым параметром можно задать выравнивание по оси. Третьим параметром управляют отображением значений из обоих DataFrame.

Синтаксис

df.compare(other[, align_axis][, keep_shape][, keep_equal])

Пример

Создадим два одинаковых DataFrame и применим к ним метод compare:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) df2 = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) res = df1.compare(df2) print(res)

Результат выполнения кода:

Empty DataFrame Columns: [] Index: []

Поскольку таблицы идентичны, метод вернул пустой DataFrame.

Пример

Теперь создадим таблицы с отличающимися значениями и применим compare без дополнительных параметров:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) df2 = pd.DataFrame({ 'a': [1, 2, 30, 4, 5], 'b': [10, 20, 30, 40, 50] }) res = df1.compare(df2) print(res)

Результат выполнения кода:

a self other 2 3 30

Результат показывает, что в строке с индексом 2 столбца a значения отличаются: в первом DataFrame стоит 3, во втором 30.

Пример

При помощи параметра align_axis можно изменить ориентацию вывода результатов сравнения:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) df2 = pd.DataFrame({ 'a': [1, 2, 30, 4, 5], 'b': [10, 20, 30, 40, 50] }) res = df1.compare(df2, align_axis=0) print(res)

Результат выполнения кода:

a 0 self 3 other 30

Теперь значения из двух DataFrame расположены по строкам, а не по столбцам.

Пример

С помощью параметра keep_shape можно сохранить размер исходного DataFrame, заполняя совпадающие ячейки пропусками:

import pandas as pd df1 = pd.DataFrame({ 'a': [1, 2, 3, 4, 5], 'b': [10, 20, 30, 40, 50] }) df2 = pd.DataFrame({ 'a': [1, 2, 30, 4, 5], 'b': [10, 20, 30, 40, 50] }) res = df1.compare(df2, keep_shape=True) print(res)

Результат выполнения кода:

a b self other self other 0 NaN NaN NaN NaN 1 NaN NaN NaN NaN 2 3.0 30.0 NaN NaN 3 NaN NaN NaN NaN 4 NaN NaN NaN NaN

Теперь результат содержит все строки, и только в строке с индексом 2 столбца a показаны различия.

Смотрите также

  • метод equals,
    который проверяет два DataFrame на равенство
  • метод merge,
    который объединяет две таблицы по ключу
  • метод join,
    который соединяет таблицы по индексу
  • метод combine,
    который выполняет поэлементное объединение таблиц
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить