`assert_frame_equal`和`equals`有什么区别

时间:2018-06-25 06:12:27

标签: python pandas testing

我很好奇地发现assert_frame_equalequal之间的区别。 两者都用于检查两个数据的相等性。它适用于assert_series_equalassert_index_equal。那么equals和测试函数之间有什么区别?

到目前为止,我发现测试功能为比较这些值(如check_dtpye等)提供了更多灵活性,并且不同于返回值,这是它们之间的唯一区别吗?

否则,何时应该使用equals方法以外的测试功能?

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)

1 个答案:

答案 0 :(得分:6)

当两个DataFrame不相等时,

assert_frame_equal抛出AssertionError

>>> pd.testing.assert_frame_equal(df1, df2)
>>> pd.testing.assert_frame_equal(df1, pd.DataFrame())
AssertionError       

DataFrame.equals仅返回布尔值True / False。

>>> df1.equals(df2)
True
>>> df1.equals(pd.DataFrame())
False    

pd.testing中定义的其他功能也是如此,这些功能用于为熊猫代码开发unit tests