You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在pandas中一次性对两个DataFrame的所有列执行等值比较

全列等值比较实现方案

1. 先对齐行(必要前置操作)

因为两个DataFrame行数相近,首先要按公共的id列对齐行顺序、过滤出共有的行,避免错位比较:

import pandas as pd
import numpy as np

# 取两个表共有的id,保证对齐后行数一致
common_ids = cdr['id'].intersection(cdr_final['id'])
# 按id排序后重置索引,保证两行顺序完全对应
cdr_aligned = cdr[cdr['id'].isin(common_ids)].sort_values('id').reset_index(drop=True)
cdr_final_aligned = cdr_final[cdr_final['id'].isin(common_ids)].sort_values('id').reset_index(drop=True)

2. 全列逐元素等值比较

直接用pandas内置的eq()方法即可完成向量化的全列比较,不需要手动遍历300+列:

# 返回和原表同结构的布尔DataFrame,每个单元格代表对应位置的值是否相等
full_comparison = cdr_aligned.eq(cdr_final_aligned)

如果需要把两个表的NaN值视为相等(默认NaN==NaN会返回False),可以加na_value参数:

full_comparison = cdr_aligned.eq(cdr_final_aligned, na_value=np.nan)

3. 常用衍生结果

如果你需要得到和单列比较时格式一致的一维布尔数组,代表每行所有列是否完全相等:

row_all_equal = full_comparison.all(axis=1).values
# 输出格式示例:array([ True,  True,  True, ...,  True, False,  True])

如果需要统计每一列的相等比例:

col_equal_ratio = full_comparison.mean(axis=0)

内容的提问来源于stack exchange,提问作者Nabih Bawazir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 11:18:01