pandas.DataFrame.compare # 数据框。比较( other , align_axis = 1 , keep_shape = False , keep_equal = False , result_names = ('self', 'other') ) [来源] # 与另一个 DataFrame 进行比较并显示差异。 参数: 其他数据框要比较的对象。 align_axis {0 或 'index', 1 或 'columns'}, 默认 1确定将比较对齐到哪个轴。 0,或“索引”产生的差异垂直堆叠从自己和他人交替绘制行。 1,或“列”产生的差异水平对齐列从自己和他人交替绘制。 keep_shape布尔值,默认 False如果为 true,则保留所有行和列。否则,仅保留具有不同值的那些。 keep_equal bool, 默认 False如果为 true,则结果保持相等的值。否则,相等的值将显示为 NaN。 result_names元组,默认 ('self', 'other')在比较中设置数据帧名称。 1.5.0 版本中的新增内容。 返回: 数据框显示并排堆叠的差异的 DataFrame。 生成的索引将是一个 MultiIndex,其中“self”和“other”交替堆叠在内部级别。 加薪: 值错误当两个 DataFrame 没有相同的标签或形状时。 也可以看看 Series.compare与其他系列进行比较并显示差异。 DataFrame.equals测试两个对象是否包含相同的元素。 笔记 匹配 NaN 不会出现差异。 只能比较相同标签(即相同形状、相同行和列标签)的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 分配结果名称 >>> 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