锋哥原创的Pandas2 Python数据处理与分析 视频教程:
2025版 Pandas2 Python数据处理与分析 视频教程(无废话版) 玩命更新中~_哔哩哔哩_bilibili
df.compare():差异高亮
df.compare()
是 pandas 中用于 高效比较两个 DataFrame 差异 的方法(自 pandas 1.1.0 版本引入),能够直观展示两个结构相同的数据集在对应位置的值差异。以下是详细说明及示例:
基本语法
df1.compare(df2, align_axis=0, # 结果对齐方式(0: 垂直堆叠差异,1: 横向并排)keep_shape=False, # 是否保留所有行/列(默认仅显示有差异的行/列)keep_equal=False, # 是否保留相等值(默认仅显示差异)result_names=('self', 'other') # 差异结果列名标识
)
核心功能
-
差异高亮:将两个 DataFrame 的差异值并排显示,区分
self
(原 DataFrame)和other
(对比的 DataFrame)。 -
灵活对齐:支持垂直或水平展示差异。
-
过滤控制:可选择仅显示差异部分或保留完整结构。
参数说明
参数 | 说明 |
---|---|
align_axis | 0 :垂直堆叠差异行;1 (默认):横向并排差异列 |
keep_shape | False (默认):仅显示有差异的行;True :保留所有行/列,无差异处填充 NaN |
keep_equal | False (默认):隐藏相等值;True :显示相等值 |
result_names | 自定义标识列名,默认 ('self', 'other') ,表示原 DataFrame 和对比对象 |
常见场景示例
1,基本差异比较
import pandas as pd
df1 = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df2 = pd.DataFrame({"A": [1, 20, 3], "B": [4, 50, 60]})
diff = df1.compare(df2)
2,横向并排差异(align_axis=0)
import pandas as pd
df1 = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df2 = pd.DataFrame({"A": [1, 20, 3], "B": [4, 50, 60]})
diff = df1.compare(df2, align_axis=0)
3,保留所有行/列(keep_shape=True)
import pandas as pd
df1 = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df2 = pd.DataFrame({"A": [1, 20, 3], "B": [4, 50, 60]})
diff = df1.compare(df2, keep_shape=True)
4,显示相等值(keep_equal=True)
import pandas as pd
df1 = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df2 = pd.DataFrame({"A": [1, 20, 3], "B": [4, 50, 60]})
diff = df1.compare(df2, keep_equal=True)
5,自定义结果列名(result_names)
import pandas as pd
df1 = pd.DataFrame({"A": [1, 2, 3], "B": [4, 5, 6]})
df2 = pd.DataFrame({"A": [1, 20, 3], "B": [4, 50, 60]})
diff = df1.compare(df2, result_names=("Original", "Modified"))