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

如何基于可变列表迭代过滤Pandas DataFrame行?

Pandas 根据可变列表过滤DataFrame的正确方法

首先纠正一个逻辑误区:你写的df[(df.task_id = 1) & (df.task_id = 5) & (df.task_id = 7)]是错误的——单个task_id不可能同时等于多个不同值,你实际需要的是筛选task_id属于目标列表的行(逻辑「或」的关系)。

针对可变长度的task_ids列表(不管长度是1还是13),用Pandas的isin()方法是最简洁高效的解决方案:

# 核心代码,直接适配任意长度的task_ids
filtered_df = df[df['task_id'].isin(task_ids)]

示例验证

当task_ids = [1,5,7]时,这段代码会自动筛选出所有task_id为1、5或7的行,完全符合你的需求。

额外说明

如果你的真实需求是筛选包含所有指定task_id的分组(比如按用户ID分组,每个用户必须有1、5、7这三个任务记录),那需要先分组再校验:

# 按user_id分组,筛选出包含所有task_ids的组
filtered_groups = df.groupby('user_id').filter(lambda x: set(task_ids).issubset(x['task_id'].unique()))

但根据你的描述,前者的单行列值匹配场景应该是你要的。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.31 11:20:28