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

Pandas整数Series真值判断异常:为何仅奇数行被筛选?

问题分析:Pandas Series按位与操作导致的筛选结果困惑
  • 代码拼写修正:你写的pd.DataFrame(tdata)里的tdata应为data,否则会触发NameError,推测是输入时的笔误。
  • 核心原因:你误用了按位与运算符&而非逻辑与运算。在Python中True等价于整数1,所以df['calories'] & True本质是对每个calories值执行二进制按位与1的操作:
    • 偶数的二进制最后一位是0,和1按位与结果为0(Pandas将0视为False)
    • 奇数的二进制最后一位是1,和1按位与结果为1(Pandas将非0值视为True)
      最终筛选出的是calories为奇数的行,也就是235对应的那一行,这和你看到的结果一致。
  • 实现“非零值视为真”的正确写法:
    1. 直接利用Pandas布尔索引特性(非零数值自动判定为True):
      print(df[df['calories']])
      
    2. 显式转换为布尔类型:
      print(df[df['calories'].astype(bool)])
      
    以上两种写法都会返回所有calories非零的行(你的数据里没有0,所以会返回全部5行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 10:17:38