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 版后已移除: 使用 rtol 和 atol 而是分别定义相对/绝对公差。类似于
math.isclose()
。- check_names布尔值,默认为True
是否检查 names 属性,这两个 index 和 column 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)