Anaconda下Python报NameError: name 'nan' is not defined求助
NameError: name 'nan' is not defined 报错排查指引
你之前写的import numpy as nan语句是错误写法:这个语句是将numpy整个模块重命名为nan,并没有导入名为nan的空值常量,自然无法解决报错。按以下优先级逐一排查:
- 修正nan的正确导入方式
如果你要在自己的代码里使用nan值,三选一即可:- 导入numpy的nan常量:
from numpy import nan - 用numpy标准别名方式调用:
import numpy as np后使用np.nan - 直接用Python内置写法生成空值:
float('nan')
- 导入numpy的nan常量:
- 修复代码里的未定义变量问题
你贴的代码片段中chunks = int(gc.shape[0] / 4)这行存在明显问题:gc变量在前面没有任何定义和赋值,运行到这行本身就会触发NameError。而且你调用的lzhw.CompressedFromCSV是直接从CSV文件流式读取分块,不需要提前依赖已读入的DataFrame算分块大小,要么直接指定固定单块行数(比如chunksize=10000代表每块读1万行),要么先单独读取文件拿到总行数再计算分块尺寸,不要直接引用未定义的gc。 - 修复lzhw库的兼容问题
如果改完上述问题还是报nan未定义,就是你安装的lzhw版本存在bug:老版本lzhw内部代码没有显式导入nan就直接调用,和新版numpy/pandas的命名空间规则不兼容。两种解决方式选一个就行:- 升级lzhw到最新版本,执行命令
pip install -U lzhw --force-reinstall - 如果升级后还是有问题,在你代码的最开头(所有导入语句之前)加三行代码,把nan注入全局内置命名空间,不需要修改第三方库源码:
- 升级lzhw到最新版本,执行命令
import builtins import numpy as np builtins.nan = np.nan
额外提醒:你代码里写的文件路径是占位假路径,实际运行时要替换成本地CSV文件的真实绝对路径,否则会触发文件不存在报错。
内容的提问来源于stack exchange,提问作者N.Mrewa
相关产品推荐
相关产品推荐

