首页 > 解决方案 > `assert_frame_equal` 和 `equals` 有什么区别

问题描述

我很想知道assert_frame_equal和之间的区别equal。两者都用于检查两个数据的相等性。它适用于assert_series_equalassert_index_equal。那么equals和testing函数有什么区别呢?

到目前为止,我发现测试函数在比较值(如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)

标签: pythonpandastesting

解决方案


assert_frame_equalAssertionError当两个 DataFrame 不相等时抛出一个。

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

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

DataFrame.equals只返回一个布尔值 True/False。

df1.equals(df2)
# True

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

中定义的其他函数也是如此,这些函数pd.testing用于为 pandas 代码开发单元测试


推荐阅读