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

同版本Pandas 1.3.4中df.query('country.isnull()')为何环境间表现不同?

问题原因与解决办法

为什么同版本Pandas表现不同?

核心原因是全局变量名冲突:Pandas的query方法在解析表达式时,会先查找Python全局命名空间里的变量,再匹配DataFrame的列名。如果队友的环境里恰好存在一个和列名country同名的Series对象(比如他们之前定义过country = pd.Series(...),或误导入了同名变量),query就会把表达式里的country当成这个全局Series,而非DataFrame的列。当内部处理这个全局Series时,就会触发"Series可变不可哈希"的报错——而你的环境里没有这个同名变量,所以正常匹配到了DataFrame的列,代码能正常运行。

解决办法

直接用兼容性更好的写法绕开问题,推荐两种:

  • 方法1:放弃query,用loc索引(最稳妥,完全避免变量冲突):
df.loc[df.country.isnull()]
  • 方法2:如果一定要用query,可以利用NaN不等于自身的特性写表达式:
df.query('country != country')

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 05:36:06