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

Pandas按OR逻辑过滤数据失效问题排查求助

问题分析与解决方案

我一眼就看出你的问题出在逻辑运算符的优先级上啦!

问题根源

Python里按位与&的优先级比比较运算符>=、<=更高,你写的datos['EdadCurp'] >= 21 & datos['EdadCurp']<=68这类表达式,实际会先计算21 & datos['EdadCurp'](按位与操作),再进行大小比较,这完全偏离了你想要的「21≤值≤68」的区间判断逻辑,导致筛选条件失效,才会出现不符合规则的条目混进结果里。

修正后的代码

给每个区间判断的比较表达式单独加括号,确保先完成「值≥21」和「值≤68」的判断,再用&连接成完整的区间条件,最后用|组合多列的判断结果:

datos[
    ((datos['edad'] >= 21) & (datos['edad'] <= 68)) |
    ((datos['EdadCurp'] >= 21) & (datos['EdadCurp'] <= 68)) |
    ((datos['edadrfc'] >= 21) & (datos['edadrfc'] <= 68))
][["edad", "EdadCurp", "edadrfc"]].head(100)

更简洁的优化写法

可以用Pandas自带的between()方法简化区间判断,它默认包含边界值(即left ≤ x ≤ right),刚好匹配你的需求,代码可读性也更强:

datos[
    datos['edad'].between(21, 68) |
    datos['EdadCurp'].between(21, 68) |
    datos['edadrfc'].between(21, 68)
][["edad", "EdadCurp", "edadrfc"]].head(100)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:40:24