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

Pandas列转category类型后NaN值逻辑判断结果不一致问题

问题原因

这个差异是pandas 1.1.x及更早版本中,Categorical类型和object类型的向量比较逻辑不一致导致的,核心逻辑如下:

  • 单元素比较的逻辑始终统一:取出的单个NaN值不管属于什么类型的列,np.nan != 'Finance'都会返回True,这符合NaN本身的定义(NaN不等于任何非NaN值,也不等于自身)
  • 转换前Team列是object类型:pandas对object类型列做向量比较时,会遵循单元素的比较规则,将NaN和非NaN值的不等判断结果返回为True,所以得到[True, True, False]的结果
  • 转换为category类型后:pandas 1.1.3版本的Categorical向量比较采用了特殊的三值逻辑处理,缺失的分类值和任意标量做==、!=比较时,结果都会被映射为False,因此第二个元素的NaN比较后返回False,最终得到[True, False, False]的结果

解决方案

这个行为差异在pandas 1.2.0版本已经被正式修复,升级pandas版本即可让Categorical的比较逻辑和object类型保持一致。如果需要在1.1.3版本中规避该问题,可以显式兼容缺失值:

# 等价于正确的不等判断,同时兼容NaN
(employees['Team'] != 'Finance') | employees['Team'].isna()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 09:06:03