pandas.DataFrame.compare#
- DataFrame.compare(other, align_axis=1, keep_shape=False, keep_equal=False)[源代码]#
与另一个DataFrame进行比较并显示差异。
1.1.0 新版功能.
- 参数
- otherDataFrame
要与之比较的对象。
- align_axis{0或‘index’,1或‘Columns’},默认为1
确定要将比较与哪个轴对齐。
- 0,或‘index’由此产生的差异垂直堆叠在一起
其中的行交替地从自己和他人中画出。
- 1,或‘列’产生的差异是水平对齐的
其中的柱子交替地从自己和他人绘制。
- keep_shape布尔值,默认为False
如果为True,则保留所有行和列。否则,只保留具有不同值的那些。
- keep_equal布尔值,默认为False
如果为True,则结果将保留相等的值。否则,相等的值显示为NAN。
- 退货
- DataFrame
显示并排堆叠的差异的DataFrame。
生成的索引将是一个多重索引,在内部级别交替堆叠“self”和“Other”。
- 加薪
- ValueError
当两个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, 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