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?
np.allclose(df1,df2)?np.allclose(df1, df2)works for this case. But what if you have some strings in your dataframes as well?np.allclose(df1.select_dtypes(exclude=[object]), df2.select_dtypes(exclude=[object])) & df1.select_dtypes(include=[object]).equals(df2.select_dtypes(include=[object]))- it's based on @Divakar's solution