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

Pandas判断dataframe是否为空时~与not运算符的使用区别

~运算符与not运算符的适用场景说明

二者的核心区别

  • not是Python原生的逻辑非运算符,仅用于布尔值的逻辑取反,返回结果只能是True或False,是普通布尔判断场景的标准用法。
  • ~是Python的按位取反运算符,作用于整数的二进制位,计算规则为~x = -x - 1,仅适用于位运算、或者pandas/numpy的向量化布尔序列取反场景。

异常结果的产生原因

Python的布尔类型是int的子类:True对应的整数值为1,False对应整数值为0。
你测试的df.empty返回值是布尔值True,用~运算时会触发原生的按位取反逻辑,实际是对整数1做取反,计算结果就是-1-1 = -2,自然不会得到你预期的False。而用not df.empty就是标准的布尔取反,得到的False是正确结果。

适用场景总结

  • 所有单个布尔值的逻辑判断场景,都应该使用not运算符,不会出现类型转换导致的异常结果。
  • 只有当你操作pandas的Series、numpy的数组这类向量化布尔序列时,才需要用~做逐元素的逻辑取反,因为这类数据结构重载了~运算符的实现,适配了批量取反的需求。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 05:36:09