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

如何基于列表值筛选DataFrame行?避免逐个编写判断条件

嘿,这个问题我太懂了!你尝试用in运算符没效果,是因为在pandas里,直接对Series用in会做整体判断(检查整个Series是否是列表的元素),返回的是一个单一的布尔值,而不是逐元素的判断结果,自然没法用来筛选行。

正确的简便方法:使用isin()方法

Pandas专门提供了isin()方法来处理这种“匹配多个候选值”的筛选场景,完美替代你不想写的多个|条件,代码简洁又易读:

# 假设你的DataFrame是df2
filtered_df = df2[df2['name'].isin(['bil', 'bob'])]

这个方法会遍历name列的每一个元素,检查它是否存在于你传入的列表['bil', 'bob']中,返回一个和原列长度一致的布尔Series——刚好能用它做布尔索引,筛选出所有符合条件的行。

额外小技巧:反向筛选

如果之后需要排除bil和bob的行,只需要在前面加个取反符号~即可:

# 筛选name列不为bil或bob的所有行
filtered_df = df2[~df2['name'].isin(['bil', 'bob'])]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 07:51:30