【Pandas】pandas DataFrame equals
Pandas2.2 DataFrame
Reindexing selection label manipulation
方法 | 描述 |
---|---|
DataFrame.add_prefix(prefix[, axis]) | 用于在 DataFrame 的行标签或列标签前添加指定前缀的方法 |
DataFrame.add_suffix(suffix[, axis]) | 用于在 DataFrame 的行标签或列标签后添加指定后缀的方法 |
DataFrame.align(other[, join, axis, level, …]) | 用于对齐两个 DataFrame 或 Series 的方法 |
DataFrame.at_time(time[, asof, axis]) | 用于筛选 特定时间点 的行的方法 |
DataFrame.between_time(start_time, end_time) | 用于筛选 指定时间范围内的数据行 的方法 |
DataFrame.drop([labels, axis, index, …]) | 用于从 DataFrame 中删除指定行或列的方法 |
DataFrame.drop_duplicates([subset, keep, …]) | 用于删除重复行的方法 |
DataFrame.duplicated([subset, keep]) | 用于检测 重复行 的方法 |
DataFrame.equals(other) | 用于比较两个 DataFrame 是否完全相等的方法 |
pandas.DataFrame.equals()
pandas.DataFrame.equals(other)
是用于比较两个 DataFrame
是否完全相等的方法。它会逐个检查索引、列名以及每个元素的值是否一致,适用于数据验证和测试场景。
📌 方法签名
DataFrame.equals(other)
🔧 参数说明:
参数 | 类型 | 说明 |
---|---|---|
other | DataFrame 或其他对象 | 要比较的对象,如果不是 DataFrame ,直接返回 False |
✅ 返回值:
bool
:如果两个DataFrame
完全相同(包括索引、列顺序、值、数据类型),则返回True
;否则返回False
。
🧪 示例代码:
示例 1:两个完全相同的 DataFrame
import pandas as pddf1 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}, index=['x', 'y'])
df2 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}, index=['x', 'y'])print("df1.equals(df2):", df1.equals(df2))
输出结果:
df1.equals(df2): True
示例 2:列顺序不同
df3 = pd.DataFrame({'B': [3, 4], 'A': [1, 2]}, index=['x', 'y'])print("df1.equals(df3):", df1.equals(df3))
输出结果:
df1.equals(df3): False
示例 3:索引不同
df4 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}, index=['a', 'b'])print("df1.equals(df4):", df1.equals(df4))
输出结果:
df1.equals(df4): False
示例 4:数据类型不同但值相同
df5 = pd.DataFrame({'A': [1.0, 2.0], 'B': [3.0, 4.0]}, index=['x', 'y'])print("df1.equals(df5):", df1.equals(df5))
输出结果:
df1.equals(df5): False
即使数值上相等,但由于
df1
中是整数类型而df5
是浮点类型,所以不认为相等。
示例 5:包含 NaN 的比较
df6 = pd.DataFrame({'A': [1, None], 'B': [None, 4]}, index=['x', 'y'])
df7 = pd.DataFrame({'A': [1, None], 'B': [None, 4]}, index=['x', 'y'])print("df6.equals(df7):", df6.equals(df7))
输出结果:
df6.equals(df7): True
NaN
值在对应位置也视为相等。
🧠 应用场景:
- 测试脚本中验证数据处理流程是否正确;
- 数据版本控制或快照对比;
- 检查两个来源的数据是否一致;
- 确保数据转换前后未发生意外更改。
⚠️ 注意事项:
- 必须结构和内容完全一致 才返回
True
; - 包括索引顺序、列顺序、数据类型、
NaN
位置等; - 不推荐用于大规模数据比较,效率较低;
- 对比时不会自动忽略行/列顺序差异。