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

pandas中DataFrame列不存在的值使用in判断为何返回True

运行逻辑说明

pandas中对Series对象直接使用in关键字做成员判断时,默认检查的是对象的索引标签,而非存储的元素值,这是返回结果不符合预期的核心原因。

对应测试场景的结果解释:

  • 构造的ids列索引为0-8的连续整数,恰好包含索引标签5,因此执行5 in df['ids']时,实际判断的是「5是否为该Series的索引」,因此返回True,全程没有校验列内存储的元素值。
  • 执行df[df['ids'] == 5]筛选时,逻辑是逐行比对ids列的元素值与5是否相等,由于列内元素确实不包含5,因此返回空DataFrame,结果符合值判断的预期。
  • 执行5 in list(df['ids'])时,Series先被转换为原生Python列表,此时in关键字判断的是列表内存储的元素值,因为元素中没有5,因此正确返回False。
正确的元素值判断方法

如果需要判断某个值是否存在于Series的元素中,不要直接对Series使用in,可以采用以下两种写法:

# 写法1:转为numpy数组后判断
5 in df['ids'].values

# 写法2:用pandas内置的isin方法判断
df['ids'].isin([5]).any()

两种写法都会正确返回False。

内容的提问来源于stack exchange,提问作者A.Razavi

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 11:48:25