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

Pandas DataFrame使用&运算符实现AND逻辑多条件筛选报错解决

报错原因

你的写法报错核心是逻辑与运算符的作用对象搞错了:

  • 你之前的代码把&放在了两个df.loc返回的DataFrame结果之间,本质是想对两个完整的DataFrame做按位与运算,而非在筛选条件层面对两个布尔判断做逻辑与,运算对象完全不符合要求。
  • 用Python原生and关键字报错是因为它只能判断单个布尔值,无法对pandas的布尔序列做逐元素的逻辑匹配,不支持pandas的向量化筛选逻辑。
  • 注意pandas多条件筛选时,&(逐位与)、|(逐位或)、~(逐位取反)的优先级高于比较运算符,每个独立条件必须用圆括号包裹,否则会出现优先级导致的逻辑错误或报错。
正确实现代码

写法1:对应原有两个取反逻辑合并

完全基于你已有的两条筛选规则做AND合并,保留Name列不小于-1000、同时不大于1000的行:

dataframe = df.loc[(~(df['Name'] < -1000)) & (~(df['Name'] > 1000))]

写法2:更简洁的区间筛选

你的需求本质是筛选Name列落在[-1000, 1000]闭区间的行,直接用pandas内置的between方法可读性更高,也不容易写错,效果和上面完全一致:

dataframe = df.loc[df['Name'].between(-1000, 1000)]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 13:57:32