Skip to content
Advertisement

What is the difference between `assert_frame_equal` and `equals`

I’m curious to find the difference between assert_frame_equal and equal. Both are for checking the equality of two data. It applies for assert_series_equal and assert_index_equal. So what is the difference between equals and testing functions?

So far I found was testing functions gives little more flexibility to compare the values, like check_dtpye options etc., and differs from returning values Is this the only difference between them?

or otherwise, When Should I use testing functions other than equals method?

df1=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,10]})
df2=pd.DataFrame({'a':[1,2,3,4,5],'b':[6,7,8,9,10]})
pd.testing.assert_frame_equal(df1,df2)
print df1.equals(df2)

pd.testing.assert_series_equal(df1['a'],df2['a'])
print df1['a'].equals(df2['a'])

pd.testing.assert_index_equal(df1.index,df2.index)
print df1.index.equals(df2.index)

Advertisement

Answer

assert_frame_equal throws an AssertionError when two DataFrames aren’t equal.

pd.testing.assert_frame_equal(df1, df2)            # no result - pass

pd.testing.assert_frame_equal(df1, pd.DataFrame()) # throws error - fail
# AssertionError       

DataFrame.equals simply returns a boolean True/False.

df1.equals(df2)
# True

df1.equals(pd.DataFrame())
# False    

This is also the case for the other functions defined in pd.testing, which are used to develop unit tests for pandas code.

User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement