pandas.testing.assert_frame_equal#

pandas.testing.assert_frame_equal(left, right, check_dtype=True, check_index_type='equiv', check_column_type='equiv', check_frame_type=True, check_less_precise=NoDefault.no_default, check_names=True, by_blocks=False, check_exact=False, check_datetimelike_compat=False, check_categorical=True, check_like=False, check_freq=True, check_flags=True, rtol=1e-05, atol=1e-08, obj='DataFrame')[源代码]#

检查左侧和右侧的DataFrame是否相等。

此函数用于比较两个DataFrame并输出任何差异。IS主要用于单元测试。附加参数允许改变所执行的相等性检查的严格性。

参数
leftDataFrame

要比较的第一个DataFrame。

rightDataFrame

要比较的第二个DataFrame。

check_dtype布尔值,默认为True

是否检查DataFrame dtype是否相同。

check_index_typeBool or{‘EQUVAL’},默认为‘EQUVAL’

是否检查Index类,dtype和INFERSED_TYPE是否相同。

check_column_typeBool or{‘EQUVAL’},默认为‘EQUVAL’

是否检查列CLASS、DTYPE和INFERSED_TYPE是否相同。是作为 exact 论证 assert_index_equal()

check_frame_type布尔值,默认为True

是否检查DataFrame类是相同的。

check_less_preciseBool或int,默认为False

指定比较精度。仅当check_exact为FALSE时使用。比较小数点后的5位(False)或3位(True)。如果为int,则指定要比较的位数。

当比较两个数字时,如果第一个数字的量级小于1e-5,我们将直接比较这两个数字,并检查它们在指定的精度内是否相等。否则,我们将比较 比率 将第二个数字的值转换为第一个数字,并检查其在指定精度内是否等于1。

1.1.0 版后已移除: 使用 rtolatol 而是分别定义相对/绝对公差。类似于 math.isclose()

check_names布尔值,默认为True

是否检查 names 属性,这两个 indexcolumn DataFrame的属性相同。

by_blocks布尔值,默认为False

指定如何比较内部数据。如果为False,则按列进行比较。如果为True,则按块进行比较。

check_exact布尔值,默认为False

是否准确比较数字。

check_datetimelike_compat布尔值,默认为False

比较DATETIME-LIKE,它是可比较的,忽略dtype。

check_categorical布尔值,默认为True

是否准确比较内部范畴。

check_like布尔值,默认为False

如果为True,则忽略索引和列的顺序。注:索引标签必须与其各自的行匹配(与列中的相同)-相同的标签必须具有相同的数据。

check_freq布尔值,默认为True

是否选中 freq DatetimeIndex或TimedeltaIndex上的属性。

1.1.0 新版功能.

check_flags布尔值,默认为True

是否选中 flags 属性。

rtol浮点,默认为1e-5

相对容差。仅当check_exact为FALSE时使用。

1.1.0 新版功能.

atol浮点型,默认为1e-8

绝对容忍。仅当check_exact为FALSE时使用。

1.1.0 新版功能.

obj字符串,默认“DataFrame”

指定要比较的对象名称,在内部用于显示相应的断言消息。

参见

assert_series_equal

断言级数相等的等价方法。

DataFrame.equals

检查DataFrame是否相等。

示例

此示例显示比较两个相同但具有不同数据类型的列的DataFrame。

>>> from pandas.testing import assert_frame_equal
>>> df1 = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})
>>> df2 = pd.DataFrame({'a': [1, 2], 'b': [3.0, 4.0]})

Df1等于它自己。

>>> assert_frame_equal(df1, df1)

Df1与df2不同,因为列‘b’是不同类型的。

>>> assert_frame_equal(df1, df2)
Traceback (most recent call last):
...
AssertionError: Attributes of DataFrame.iloc[:, 1] (column name="b") are different

属性“dtype”不同 [left] :int64 [正确的] :Float64

忽略具有check_dtype的列中的不同数据类型。

>>> assert_frame_equal(df1, df2, check_dtype=False)