You need to enable JavaScript to run this app. 如何检查Pandas DataFrame各列取值是否全部等于指定值
优惠活动
大模型
产品
解决方案
定价
更多

如何检查Pandas DataFrame各列取值是否全部等于指定值

Pandas 逐列校验全列值是否等于指定值的实现

直接写all(df == 2.5)完全达不到逐列判断的效果——因为df == 2.5返回的是和原表同形状的布尔矩阵,套Python内置的all()会把整个矩阵当成整体判断,没法输出每一列的独立校验结果。

核心实现逻辑

Pandas 自带的.all()方法默认就是按列维度做聚合判断,刚好匹配逐列校验的需求,步骤非常直接:

  • 先把原DataFrame和目标值2.5做逐元素比对,得到同结构的布尔值矩阵
  • 对这个布尔矩阵调用列维度的.all(),就能直接拿到每列的判断结果
    对应可运行的代码片段:
import pandas as pd
# 构造和提问结构一致的示例DataFrame
df = pd.DataFrame({
    "x_data": [2.5, 2.5, 2.5, 2.5],
    "y_data": [2.5, 2.5, 2.5, 2.5]
})
# 逐列判断全列值是否等于2.5
col_bool_result = (df == 2.5).all()

运行后col_bool_result的输出为:

x_data    True
y_data    True
dtype: bool

如果要得到期望的1 1格式的数值结果,只需要把布尔值转成整数类型即可:

int_result = col_bool_result.astype(int)

转值后的输出为:

x_data    1
y_data    1
dtype: int64

如果需要输出不带列名的纯1 1文本格式,可以提取值拼接打印:

print(" ".join(map(str, int_result.values)))
# 控制台实际输出:1 1

实用提示:做浮点值等值校验时,可能遇到浮点精度导致的判断失真,比如计算得到的2.5实际存储值和字面2.5存在极微小偏差。这种场景可以替换成带容错的判断逻辑:

import numpy as np
# 逐列做带浮点容错的等值判断
col_bool_result = df.apply(lambda col: np.isclose(col, 2.5).all())
col_bool_result.astype(int)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.04 07:06:05