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

pandas DataFrame多条件行筛选的简洁实现方法咨询

Pandas多条件筛选紧凑写法实现方案

逻辑与(同时满足多条件)实现

你预想的元组匹配写法可以通过eq()+all(axis=1)实现,效果和&连接多个条件完全一致:

# 筛选name='A'且action='buy'的行
df1 = df[df[['name', 'action']].eq(('A', 'buy')).all(axis=1)]

原理:eq()方法会将DataFrame的每一列和元组对应位置的值做等值匹配,返回布尔类型的DataFrame;all(axis=1)会判断每一行的所有布尔值是否都为True,只有所有条件都满足的行才会被保留。

逻辑或(满足任意条件)实现

对应|连接多条件的场景,把all(axis=1)替换为any(axis=1)即可:

# 筛选name='A'或class='sub'的行
df2 = df[df[['name', 'class']].eq(('A', 'sub')).any(axis=1)]

原理:any(axis=1)只要某一行有任意一个布尔值为True,就会返回True,对应逻辑或的效果。

更灵活的复杂混合逻辑方案

如果涉及与或非混合的多条件筛选,更推荐使用query()方法,写法更简洁易读,接近自然语言:

# 逻辑与写法
df1 = df.query("name == 'A' and action == 'buy'")

# 逻辑或写法
df2 = df.query("name == 'A' or class == 'sub'")

# 引用外部变量写法,变量前加@符号即可
target_name = 'A'
df3 = df.query("name == @target_name and action != 'sell'")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 08:09:04