Skip to main content
`Ctrl`+`K`

# pandas.DataFrame.equals

DataFrame.equals(other)

  Test whether two objects contain the same elements.

  This function allows two Series or DataFrames to be compared against each other to see if they have the same shape and elements. NaNs in the same location are considered equal.

  The row/column index do not need to have the same type, as long as the values are considered equal. Corresponding columns and index must be of the same dtype.

  Parameters:
    other Series or DataFrame

      The other Series or DataFrame to be compared with the first.

  Returns:
    bool

      True if all elements are the same in both objects, False otherwise.

  See also

  `Series.eq`

    Compare two Series objects of the same length and return a Series where each element is True if the element in each Series is equal, False otherwise.

  `DataFrame.eq`

    Compare two DataFrame objects of the same shape and return a DataFrame where each element is True if the respective element in each DataFrame is equal, False otherwise.

  `testing.assert_series_equal`

    Raises an AssertionError if left and right are not equal. Provides an easy interface to ignore inequality in dtypes, indexes and precision among others.

  `testing.assert_frame_equal`

    Like assert_series_equal, but targets DataFrames.

  `numpy.array_equal`

    Return True if two arrays have the same shape and elements, False otherwise.

  Examples

      >>> df = pd.DataFrame({1: [10], 2: [20]})
      >>> df
          1   2
      0  10  20

  DataFrames df and exactly_equal have the same types and values for their elements and column labels, which will return True.

      >>> exactly_equal = pd.DataFrame({1: [10], 2: [20]})
      >>> exactly_equal
          1   2
      0  10  20
      >>> df.equals(exactly_equal)
      True

  DataFrames df and different_column_type have the same element types and values, but have different types for the column labels, which will still return True.

      >>> different_column_type = pd.DataFrame({1.0: [10], 2.0: [20]})
      >>> different_column_type
         1.0  2.0
      0   10   20
      >>> df.equals(different_column_type)
      True

  DataFrames df and different_data_type have different types for the same values for their elements, and will return False even though their column labels are the same values and types.

      >>> different_data_type = pd.DataFrame({1: [10.0], 2: [20.0]})
      >>> different_data_type
            1     2
      0  10.0  20.0
      >>> df.equals(different_data_type)
      False

  DataFrames with NaN in the same locations compare equal.

      >>> df_nan1 = pd.DataFrame({"a": [1, np.nan], "b": [3, np.nan]})
      >>> df_nan2 = pd.DataFrame({"a": [1, np.nan], "b": [3, np.nan]})
      >>> df_nan1.equals(df_nan2)
      True

  If the NaN values are not in the same locations, they compare unequal.

      >>> df_nan3 = pd.DataFrame({"a": [1, np.nan], "b": [3, 4]})
      >>> df_nan1.equals(df_nan3)
      False