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

Pandas query遇列含空值失效问题咨询

问题分析与解决方案

这是Pandas 1.5.x版本query方法的已知功能限制,并非操作错误。

原因说明

在Pandas 1.5.x中,pd.NA属于Nullable字符串类型的缺失值标记。当你在query语句中直接调用str.contains时,即便添加了Subjects.notna()的判断,query的表达式解析逻辑不会提前短路跳过缺失值行,仍然会尝试对pd.NA执行str.contains方法。而早期版本的query对Nullable类型缺失值的方法调用处理存在缺陷,进而抛出UndefinedVariableError。

可行解决方案

1. 先过滤非空值再执行query(你已验证的有效方法)

先通过布尔索引排除Subjects列的缺失值,再用query进行条件过滤:

df_test[df_test['Subjects'].notna()].query('Title.str.startswith("T") and Subjects.str.contains("Math")')

2. 在str.contains中指定na=False参数

利用str.contains的na参数,直接将缺失值对应的判断结果设为False,避免对缺失值执行方法调用:

df_test.query('Title.str.startswith("T") and Subjects.str.contains("Math", na=False)')

3. 升级Pandas到2.0及以上版本

Pandas 2.0+修复了query方法对Nullable类型缺失值的处理逻辑,你原本包含Subjects.notna()判断的写法可以正常运行:

df_test.query('Subjects.notna() and Title.str.startswith("T") and Subjects.str.contains("Math")')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 00:22:03