pythonpandas

Confirming equality of two pandas dataframes?


How to assert that the following two dataframes df1 and df2 are equal?

import pandas as pd
df1 = pd.DataFrame([1, 2, 3])
df2 = pd.DataFrame([1.0, 2, 3])

The output of df1.equals(df2) is False. As of now, I know two ways:

print (df1 == df2).all()[0]

or

df1 = df1.astype(float)
print df1.equals(df2)

It seems a little bit messy. Is there a better way to do this comparison?


Solution

  • You can use assert_frame_equal and not check the dtype of the columns.

    # Pre v. 0.20.3
    # from pandas.util.testing import assert_frame_equal
    
    from pandas.testing import assert_frame_equal
    
    assert_frame_equal(df1, df2, check_dtype=False)