【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, ...) 用于对齐两个 DataFrameSeries 的方法
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 是否完全相等的方法。它会逐个检查索引、列名以及每个元素的值是否一致,适用于数据验证和测试场景。


📌 方法签名
python 复制代码
DataFrame.equals(other)

🔧 参数说明:
参数 类型 说明
other DataFrame 或其他对象 要比较的对象,如果不是 DataFrame,直接返回 False

✅ 返回值:
  • bool:如果两个 DataFrame 完全相同(包括索引、列顺序、值、数据类型),则返回 True;否则返回 False

🧪 示例代码:
示例 1:两个完全相同的 DataFrame
python 复制代码
import pandas as pd

df1 = 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:列顺序不同
python 复制代码
df3 = pd.DataFrame({'B': [3, 4], 'A': [1, 2]}, index=['x', 'y'])

print("df1.equals(df3):", df1.equals(df3))
输出结果:
复制代码
df1.equals(df3): False

示例 3:索引不同
python 复制代码
df4 = pd.DataFrame({'A': [1, 2], 'B': [3, 4]}, index=['a', 'b'])

print("df1.equals(df4):", df1.equals(df4))
输出结果:
复制代码
df1.equals(df4): False

示例 4:数据类型不同但值相同
python 复制代码
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 的比较
python 复制代码
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 位置等;
  • 不推荐用于大规模数据比较,效率较低;
  • 对比时不会自动忽略行/列顺序差异。

相关推荐
2601_9669496515 小时前
为什么量化回测中 for 循环比 DataFrame 慢三个数量级?从向量化原理讲起
开发语言·python·pandas·股票数据·quantdash
Xiu Yan18 小时前
Python 数据分析:Pandas Series 零基础入门教程
python·jupyter·pycharm·numpy·pandas
gCode Teacher 格码致知2 天前
Pandas教学-6:coerce详解
python·pandas
benchmark_cc2 天前
策略临时需要一批股票的最新价格,先查行情还是先建股票池?——从量化策略执行逻辑看数据获取顺序
python·数据分析·pandas·量化交易·股票数据·quantdash
2601_966949652 天前
只拿到股票代码还不够:量化程序到底还需要哪些标的信息?——从数据建模开始理解股票元数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
szephyr3 天前
用 Python 写自动化脚本:定时任务、文件批处理、自动出报表
python·自动化·pandas·脚本·定时任务
智购科技无人售货机工厂7 天前
2026自动售货机AI智能体架构:从47个小模型到33.7亿Token的工程实践~YH
android·人工智能·驱动开发·单片机·pandas
小葱炖豆腐7 天前
python绘制excel折线图
python·excel·numpy·pandas·matplotlib
七灵微8 天前
【AI】代码实战- 基于时间序列的轴承检测1
人工智能·机器学习·ai·pandas·matplotlib
2601_966949658 天前
为什么量化策略需要大量历史股票数据?从回测可信度理解数据规模
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash