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

不使用mask,基于True条件过滤Pandas DataFrame的正确方法

Pandas .filter() 过滤行失败?原因和替代方案看这里

为什么你的代码没用?

Pandas里的.filter()方法根本不是用来过滤行的,它的作用是筛选DataFrame的列(或Series的索引),支持用列名的字符串匹配(比如like参数、正则表达式)或者列名列表来筛选。你传入布尔数组df1.numbers < 2,它会把这个布尔数组当成列名的匹配条件,自然找不到对应的列,结果就变成空的了。

正确的行过滤方案

要筛选numbers列小于2的行,用以下几种方法都可以:

1. 布尔索引(最直接)

df1[df1.numbers < 2]

执行后得到预期结果:

numbers  Name
0        0   Tom
3        1  Mary

2. 使用.loc[](更严谨,明确指定行和列)

.loc[]支持行的布尔索引,加上:表示保留所有列:

df1.loc[df1.numbers < 2, :]

结果和上面一致。

3. 使用.query()(更简洁的语法)

适合写复杂的过滤条件,语法更接近自然语言:

df1.query("numbers < 2")

同样能得到你想要的结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:20:40