Spec-Zone.ru › pandas 2

pandas.DataFrame.compare

DataFrame.compare(other, align_axis=1, keep_shape=False, keep_equal=False, result_names=('self', 'other'))[source]

Сравнение с другой таблицей DataFrame и отображение различий.

Параметры:
other:DataFrame

Объект для сравнения.

align_axis:{0 или ‘индекс’, 1 или ‘колонки’}, по умолчанию 1

Определение оси для выравнивания сравнения.

  • 0 или ‘индекс’: Результирующие различия выстроены вертикально

    с построчными чередующимися данными из self и other.

  • 1 или ‘колонки’: Результирующие различия выстроены горизонтально

    с колонками, чередующимися из self и other.

keep_shape:bool, по умолчанию False

Если True, сохраняются все строки и столбцы. В противном случае сохраняются только те, которые имеют разные значения.

keep_equal:bool, по умолчанию False

Если True, результат сохраняет равные значения. В противном случае равные значения отображаются как NaNs.

result_names:кортеж, по умолчанию (‘self’, ‘other’)

Устанавливает имена таблиц DataFrame в сравнении.

Новое в версии 1.5.0.

Возвращает:
DataFrame

DataFrame, показывающий различия, выстроены в ряд.

Результат будет иметь многоуровневый индекс с ‘self’ и ‘other’, чередующимися на внутреннем уровне.

Возбуждает:
ValueError

Если две таблицы DataFrame не имеют идентичных меток или формы.

См. также

Series.compare

Сравнение с другим объектом Series и отображение различий.

DataFrame.equals

Проверка, содержат ли два объекта те же элементы.

Примечания

Совпадающие NaNs не будут отображаться как различия.

Можно сравнивать только таблицы DataFrame с идентичными метками (т.е. одинаковой формой и идентичными метками строк и столбцов).

Примеры

>>> df = pd.DataFrame(
...     {
...         "col1": ["a", "a", "b", "b", "a"],
...         "col2": [1.0, 2.0, 3.0, np.nan, 5.0],
...         "col3": [1.0, 2.0, 3.0, 4.0, 5.0]
...     },
...     columns=["col1", "col2", "col3"],
... )
>>> df
  col1  col2  col3
0    a   1.0   1.0
1    a   2.0   2.0
2    b   3.0   3.0
3    b   NaN   4.0
4    a   5.0   5.0
>>> df2 = df.copy()
>>> df2.loc[0, 'col1'] = 'c'
>>> df2.loc[2, 'col3'] = 4.0
>>> df2
  col1  col2  col3
0    c   1.0   1.0
1    a   2.0   2.0
2    b   3.0   4.0
3    b   NaN   4.0
4    a   5.0   5.0

Выравнивание различий по столбцам

>>> df.compare(df2)
  col1       col3
  self other self other
0    a     c  NaN   NaN
2  NaN   NaN  3.0   4.0

Назначение result_names

>>> df.compare(df2, result_names=("left", "right"))
  col1       col3
  left right left right
0    a     c  NaN   NaN
2  NaN   NaN  3.0   4.0

Выстраивание различий по строкам

>>> df.compare(df2, align_axis=0)
        col1  col3
0 self     a   NaN
  other    c   NaN
2 self   NaN   3.0
  other  NaN   4.0

Сохранение равных значений

>>> df.compare(df2, keep_equal=True)
  col1       col3
  self other self other
0    a     c  1.0   1.0
2    b     b  3.0   4.0

Сохранение всех исходных строк и столбцов

>>> df.compare(df2, keep_shape=True)
  col1       col2       col3
  self other self other self other
0    a     c  NaN   NaN  NaN   NaN
1  NaN   NaN  NaN   NaN  NaN   NaN
2  NaN   NaN  NaN   NaN  3.0   4.0
3  NaN   NaN  NaN   NaN  NaN   NaN
4  NaN   NaN  NaN   NaN  NaN   NaN

Сохранение всех исходных строк, столбцов и значений

>>> df.compare(df2, keep_shape=True, keep_equal=True)
  col1       col2       col3
  self other self other self other
0    a     c  1.0   1.0  1.0   1.0
1    a     a  2.0   2.0  2.0   2.0
2    b     b  3.0   3.0  3.0   4.0
3    b     b  NaN   NaN  4.0   4.0
4    a     a  5.0   5.0  5.0   5.0

© 2008–2022, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/2.2.2/reference/api/pandas.DataFrame.compare.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API