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 的
index和column属性的names属性是否相同。- by_blocksbool,默认 False
指定如何比较内部数据。如果为 False,则按列比较。如果为 True,则按块比较。
- check_exactbool,默认 False
是否精确比较数字。
在 2.2.0 版本发生变更: 如果未指定
check_exact、rtol和atol,则默认为 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)