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