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

Jupyter/Colab中如何筛选不含指定值的行创建DataFrame?

代码失效原因

之前编写的筛选代码未达预期,是Python运算符优先级导致的逻辑错误:位取反运算符~的优先级高于比较运算符==,原代码实际执行逻辑是先对ileads_address列的所有值做按位取反,再判断取反后的值是否等于0,和预期的「筛选值不等于0的行」逻辑完全不符。

可用实现代码

以下几种写法都可以实现筛选ileads_address列值不为0.0的行、存入新DataFrame的需求,可根据自己的场景选择:

  • 修正原写法的逻辑:给相等判断整体加括号,保证取反操作作用在判断结果上
# 匹配浮点型0.0值做排除
df5 = df4[~(df4['ileads_address'] == 0.0)]
  • 直接使用不等于运算符判断,写法更简洁,不需要处理取反优先级问题
df5 = df4[df4['ileads_address'] != 0.0]
  • 用pandas内置的比较方法,同时兼容空值过滤场景:如果列中存在NaN空值,不做额外处理的话空值行默认会被保留,需要排除空值可以用下面的写法
# 同时排除0.0值和空值
df5 = df4[df4['ileads_address'].ne(0.0) & df4['ileads_address'].notna()]

排查提示:如果运行上述代码后筛选结果仍不符合预期,先执行print(df4['ileads_address'].dtype)查看列的数据类型,如果是字符串类型,需要把判断条件里的数值0.0替换为字符串'0.0'再执行筛选,类型不匹配会导致比较逻辑失效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 04:39:21