You need to enable JavaScript to run this app. 如何按多条件筛选pandas DataFrame的行以拆分生成新子df
优惠活动
大模型
产品
解决方案
定价
更多

如何按多条件筛选pandas DataFrame的行以拆分生成新子df

Pandas 多条件筛选DataFrame的正确写法

错误原因

你写的代码存在两个语法问题:

  • 多条件并列时不能省略判断主体,不能直接写> 2958 & < 3530,需要写出两个完整的布尔判断表达式
  • Pandas中逻辑运算符&的优先级高于比较运算符,不加括号会优先计算&两侧的内容,直接触发语法错误

正确实现代码

基础写法

# 浅层df:深度小于2900m
shallow = df[df['depth'] < 2900]
# 中层df:深度在2901m到3500m之间
mid = df[(df['depth'] > 2901) & (df['depth'] < 3500)]
# 深层df:深度大于3501m
deep = df[df['depth'] > 3501]

简化写法

你也可以选择更易读的两种实现方式:

  1. 用between方法处理区间判断:
# inclusive='neither'表示不包含区间两端的端点,匹配你的筛选要求
mid = df[df['depth'].between(2901, 3499, inclusive='neither')]
  1. 用query方法写更接近自然语言的筛选逻辑:
mid = df.query("depth > 2901 and depth < 3500")

注意事项

  • 每个独立的判断条件必须用小括号包裹,否则会触发优先级错误
  • 多条件逻辑与用&,逻辑或用|,逻辑非用~,不要用Python原生的and/or/not,否则会报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.11 03:12:02