pandas.DataFrame.compare#
- DataFrame.compare(other, align_axis=1, keep_shape=False, keep_equal=False, result_names=('self', 'other'))[源代码][源代码]#
与另一个 DataFrame 进行比较并显示差异。
- 参数:
- 其他DataFrame
要比较的对象。
- align_axis{0 或 ‘index’, 1 或 ‘columns’}, 默认 1
确定在哪个轴上对齐比较。
- 0, 或 ‘index’结果差异垂直堆叠
从 self 和 other 中交替绘制行。
- 1, 或 ‘列’结果差异是水平对齐的
从 self 和 other 中交替绘制列。
- keep_shapebool, 默认 False
如果为真,所有行和列都会被保留。否则,只有值不同的行和列会被保留。
- keep_equalbool, 默认 False
如果为真,结果会保留相等的值。否则,相等的值会显示为 NaNs。
- result_namestuple, 默认 (‘self’, ‘other’)
在比较中设置数据框的名称。
Added in version 1.5.0.
- 返回:
- DataFrame
显示差异并排堆叠的 DataFrame。
生成的索引将是一个带有 ‘self’ 和 ‘other’ 交替堆叠在内层的多级索引。
- 引发:
- ValueError
当两个DataFrame没有相同的标签或形状时。
参见
Series.compare
与另一个系列进行比较并显示差异。
DataFrame.equals
测试两个对象是否包含相同的元素。
注释
匹配的 NaNs 不会显示为差异。
只能比较标签相同的(即形状相同、行和列标签完全相同)的 DataFrame
示例
>>> df = pd.DataFrame( ... { ... "col1": ["a", "a", "b", "b", "a"], ... "col2": [1.0, 2.0, 3.0, np.nan, 5.0], ... "col3": [1.0, 2.0, 3.0, 4.0, 5.0] ... }, ... columns=["col1", "col2", "col3"], ... ) >>> df col1 col2 col3 0 a 1.0 1.0 1 a 2.0 2.0 2 b 3.0 3.0 3 b NaN 4.0 4 a 5.0 5.0
>>> df2 = df.copy() >>> df2.loc[0, 'col1'] = 'c' >>> df2.loc[2, 'col3'] = 4.0 >>> df2 col1 col2 col3 0 c 1.0 1.0 1 a 2.0 2.0 2 b 3.0 4.0 3 b NaN 4.0 4 a 5.0 5.0
将差异对齐到列
>>> df.compare(df2) col1 col3 self other self other 0 a c NaN NaN 2 NaN NaN 3.0 4.0
分配 result_names
>>> df.compare(df2, result_names=("left", "right")) col1 col3 left right left right 0 a c NaN NaN 2 NaN NaN 3.0 4.0
将差异堆叠在行上
>>> df.compare(df2, align_axis=0) col1 col3 0 self a NaN other c NaN 2 self NaN 3.0 other NaN 4.0
保持相等的值
>>> df.compare(df2, keep_equal=True) col1 col3 self other self other 0 a c 1.0 1.0 2 b b 3.0 4.0
保持所有原始行和列
>>> df.compare(df2, keep_shape=True) col1 col2 col3 self other self other self other 0 a c NaN NaN NaN NaN 1 NaN NaN NaN NaN NaN NaN 2 NaN NaN NaN NaN 3.0 4.0 3 NaN NaN NaN NaN NaN NaN 4 NaN NaN NaN NaN NaN NaN
保持所有原始行和列,以及所有原始值
>>> df.compare(df2, keep_shape=True, keep_equal=True) col1 col2 col3 self other self other self other 0 a c 1.0 1.0 1.0 1.0 1 a a 2.0 2.0 2.0 2.0 2 b b 3.0 3.0 3.0 4.0 3 b b NaN NaN 4.0 4.0 4 a a 5.0 5.0 5.0 5.0