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

如何在Pandas DataFrame中校验多列值是否相等?

实现DataFrame每行多列值相等的校验

嘿,这个需求其实很常见,不管是3列还是20列,都有简洁高效的实现方式,我给你分享两种常用方法:

方法一:利用nunique()统计每行唯一值数量

nunique(axis=1)会计算每行的唯一值个数,如果所有列值相等,唯一值数量就是1,我们只需要判断这个数量是否等于1即可:

import pandas as pd
from pandas import DataFrame

# 你的示例数据
data = [[10,10,10],[12,12,12],[10,12,10]]
df = DataFrame(data,columns=['Col1','Col2','Col3'])

# 校验每行所有列值是否相等
check_result = df.nunique(axis=1) == 1
print(check_result.values)  # 输出:[ True  True False]

如果你的20列里有部分列不需要校验,只需要指定列名即可,比如:

# 假设只需要校验Col1到Col20中的前15列
target_cols = [f'Col{i}' for i in range(1,16)]
check_result = df[target_cols].nunique(axis=1) == 1

方法二:利用eq()逐列对比+all()校验

我们可以拿每行的第一列值作为基准,和其他所有列逐行对比,再检查每行是否所有对比结果都为True:

# 以第一列为基准,对比所有列
check_result = df.eq(df.iloc[:, 0], axis=0).all(axis=1)
print(check_result.values)  # 输出:[ True  True False]

这种方法的优势是逻辑直观,如果你想换其他列作为基准,只需要修改iloc[:, 0]的索引即可,比如iloc[:, 5]就是拿第6列做基准。

这两种方法处理20列的数据集都完全没问题,运行效率也很高,你可以根据自己的习惯选择~

内容的提问来源于stack exchange,提问作者Sharvari Gc

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 03:39:56