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

如何在pandas DataFrame中生成low/mid/high三类布尔列并解决ValueError报错

错误原因

原生Python的连续比较语法a < x < b不能直接作用于pandas Series对象。该语法会先计算33 < df['int']得到一个布尔Series,再尝试将这个Series和66做真值判定,而pandas不允许直接判定整个Series的布尔值,因此触发报错。你之前用and运算符也会报错,因为and/or/not都是Python原生逻辑运算符,要求操作数是单个布尔值,不能直接对Series做逐元素逻辑运算。

可行实现方法

方法1:逐元素逻辑运算符&实现

将两个比较条件分别用括号包裹后,用&做逐元素与运算即可:

df['low'] = df['int'] <= 33
df['mid'] = (df['int'] > 33) & (df['int'] < 66)
df['high'] = df['int'] >= 66 

注意必须给每个比较条件加括号:因为&的运算符优先级高于比较运算符,不加括号会先执行逻辑与运算再做比较,导致逻辑错误或报错。

方法2:用pandas内置between方法实现(更简洁)

针对区间判断的场景,直接调用between方法即可,通过inclusive参数控制区间开闭:

# inclusive='neither'表示左右边界都不包含,正好匹配33<数值<66的需求
df['mid'] = df['int'].between(33, 66, inclusive='neither')

内容的提问来源于stack exchange,提问作者Htin Aung Lu

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 07:06:04