Polars.read_ndjson读取JSONLines列被置空及插件报错求助
问题排查与解决方案
一、列数据被置空问题(location列有数据行被清空,原空值保留)
检查JSONLines文件格式与内容
直接用文本编辑器打开az-routes.jsonlines,随机抽查多行(尤其是location列本该有值的行),确认:- 字段名是否统一(比如有没有写成
Location而非location的情况) - JSON格式是否合法(引号是否闭合、逗号是否正确,有没有语法错误)
- 有值的location字段是否确实存在有效内容,而非隐性的空字符串或格式错误值
- 字段名是否统一(比如有没有写成
强制指定Schema与调整推断逻辑
Polars默认只读取前几百行推断Schema,若后续行的字段类型不一致,会导致数据被置空。可以:- 增大Schema推断行数:
routes = pl.read_ndjson('~<Path>/az-routes.jsonlines', infer_schema_length=1000) - 强制指定location列的类型为字符串,避免类型推断错误:
routes = pl.read_ndjson( '~<Path>/az-routes.jsonlines', schema_overrides={"location": pl.String} )
- 增大Schema推断行数:
修正路径解析问题
注意路径中的反斜杠:Windows下Python字符串里的单个反斜杠是转义字符,会导致路径解析错误。把路径改成:- 双反斜杠:
'~<Path>\\az-routes.jsonlines' - 正斜杠:
'~<Path>/az-routes.jsonlines'
确保实际读取的是目标文件,而非错误路径下的其他文件。
- 双反斜杠:
排除读取引擎问题
尝试切换到PyArrow引擎或禁用PyArrow:# 用PyArrow引擎读取 routes = pl.read_ndjson('~<Path>/az-routes.jsonlines', use_pyarrow=True) # 禁用PyArrow routes = pl.read_ndjson('~<Path>/az-routes.jsonlines', use_pyarrow=False)
二、polars.exceptions.ColumnNotFoundError: counts 错误
这个错误来自PyCharm的Polars相关插件,并非你的业务代码问题:
- 插件在自动预览DataFrame时,尝试访问不存在的
counts列导致报错 - 解决方案:
- 更新PyCharm的Polars插件到最新版本
- 暂时禁用Polars相关插件(Settings -> Plugins -> 找到Polars插件并禁用)
- 关闭PyCharm的DataFrame自动预览功能(Settings -> Tools -> Python Scientific -> 取消勾选"Show DataFrames in toolwindow")
内容的提问来源于stack exchange,提问作者Mocboch
相关产品推荐
相关产品推荐

