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

Python中如何筛选DataFrame里Boolean变量为True的行?

问题:筛选DataFrame中Boolean列值为True的行

给定的Given_DF如下:

ID    A     B
0    123   True
1    456   False
2    789   False
3    132   True
4    465   False

期望得到仅包含ID为0和3的两行DataFrame。

尝试了两种方法但未成功:

  1. 将B列作为筛选条件:
Desired = Given_DF["B"].isin(True)  
  1. 对变量B建立索引并使用loc筛选True的记录:
prep.sort_index(level=["B"])
Desired = prep.loc["True"]

可行的解决方法

方法1:直接布尔索引

利用B列本身的布尔值直接筛选,这是最简洁高效的方式:

Desired = Given_DF[Given_DF["B"]]

方法2:使用loc筛选

loc支持布尔索引,语义更清晰,适合需要同时筛选行和列的场景:

Desired = Given_DF.loc[Given_DF["B"]]

方法3:使用query方法

如果习惯类SQL的语法,可以用query:

# 两种写法都可行
Desired = Given_DF.query("B == True")
Desired = Given_DF.query("B")

之前方法失败的原因

  • 第一种方法中,isin()需要传入可迭代对象(比如列表[True]),而非单个值True,正确写法为Given_DF[Given_DF["B"].isin([True])],但没必要用isin,直接布尔索引更简单。
  • 第二种方法中,你未将B列设置为索引(仅做了排序),且用字符串"True"匹配布尔值True,类型不匹配导致失败。若要通过索引筛选,需先设置索引:
prep = Given_DF.set_index("B")
Desired = prep.loc[True]  # 注意这里是布尔值True,不是字符串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 13:33:09