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_names=True, by_blocks=False, check_exact=_NoDefault.no_default, check_datetimelike_compat=False, check_categorical=True, check_like=False, check_freq=True, check_flags=True, rtol=_NoDefault.no_default, atol=_NoDefault.no_default, obj='DataFrame')[源代码]#

检查 left 和 right DataFrame 是否相等。

此函数旨在比较两个 DataFrame 并输出任何差异。它主要用于单元测试。其他参数允许更改执行的相等性检查的严格程度。

Parameters:
leftDataFrame

要比较的第一个 DataFrame。

rightDataFrame

要比较的第二个 DataFrame。

check_dtypebool, default True

是否检查 DataFrame 的 dtype 是否相同。

check_index_typebool 或 {‘equiv’},默认为 ‘equiv’。

是否检查 Index 的类、dtype 和 inferred_type 是否相同。

check_column_typebool 或 {‘equiv’},默认为 ‘equiv’。

是否检查列的类、dtype 和 inferred_type 是否相同。此参数被传递给 assert_index_equal()exact 参数。

check_frame_typebool, default True

是否检查 DataFrame 的类是否相同。

check_namesbool, default True

是否检查 DataFrame 的 indexcolumn 属性的 names 属性是否相同。

by_blocksbool,默认 False

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

check_exactbool,默认 False

是否精确比较数字。

在 2.2.0 版本发生变更: 如果未指定 check_exactrtolatol,则默认为 True,用于整数 dtype。

check_datetimelike_compatbool,默认 False

比较 datetime-like,忽略 dtype。

check_categoricalbool, default True

是否精确比较内部的 Categorical。

check_likebool,默认 False

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

check_freqbool, default True

是否检查 DatetimeIndex 或 TimedeltaIndex 上的 freq 属性。

check_flagsbool, default True

是否检查 flags 属性。

rtolfloat,默认为 1e-5。

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

atolfloat,默认为 1e-8。

绝对容差。仅当 check_exact 为 False 时使用。

objstr,默认为 ‘DataFrame’

指定正在比较的对象名称,内部用于显示适当的断言消息。

参见

assert_series_equal

断言 Series 相等的等效方法。

DataFrame.equals

检查 DataFrame 相等性。

Examples

此示例显示了比较两个相等但列具有不同 dtype 的 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” 不同 [左]: int64 [右]: float64

check_dtype 下忽略列中不同的 dtype。

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