Polars 如何用 read_excel 的 fastexcel 引擎读取指定工作表?

发布时间:2026/9/12 17:00:36
Polars 如何用 read_excel 的 fastexcel 引擎读取指定工作表? Polars 如何用 read_excel 的 fastexcel 引擎读取指定工作表【免费下载链接】polarsExtremely fast Query Engine for DataFrames, written in Rust项目地址: https://gitcode.com/GitHub_Trending/po/polars如果你的数据存放在多工作表的 Excel 文件.xlsx里而你又只想把其中某一张工作表读进 Polars DataFrame那么pl.read_excel的sheet_name参数配合默认引擎就能直接完成这件事。Polars 本身没有原生 Excel 读取器而是通过外部 Python 库称为 engine先把 Excel 文件解析成 Polars 可以处理的格式其中基于 Rust calamine crate 的 fastexcel 引擎是官方推荐的默认读取器。本文只覆盖 Python Polars 下读取指定工作表这一条路径环境要求是已安装 polars 的 Python 环境外加对应的引擎依赖包。安装 fastexcel 引擎依赖read_excel默认使用的引擎依赖 fastexcel 包。Polars 文档给出的安装命令是把三个可用引擎的依赖一起装上pip install fastexcel xlsx2csv openpyxl如果只用默认的 fastexcel 引擎安装其中的fastexcel即可xlsx2csv和openpyxl只在 fastexcel 读不动某个文件时才需要作为备选引擎。文档同时提醒从性能角度能拿到 Parquet 或 CSV 文件时应优先用那些格式。关于引擎命名文档中存在两处表述用户指南直接称该默认引擎为 fastexcel而read_excel的 API 文档将引擎参数写为engine : {calamine, openpyxl, xlsx2csv}默认值为calamine并说明该引擎“using thefastexcelmodule to bind the Rust-based Calamine parser”。两者指的是同一个基于 calamine 的默认引擎本文按用户指南的称呼称其为 fastexcel。使用 sheet_name 读取指定工作表不指定工作表时read_excel只读取第一个工作表。要读取指定工作表传入sheet_name参数即可用户指南给出的示例为import polars as pl df pl.read_excel(docs/assets/data/path.xlsx, sheet_nameSales)其中文件路径是文档示例替换成你自己的 .xlsx 文件路径即可。只读单个工作表时返回值是一个pl.DataFrame。API 文档还给出了几个直接约束sheet_name用法的规则sheet_name不能与sheet_id同时指定一次传入多个工作表名如sheet_name[Sales, Stock]时返回值变成{工作表名: DataFrame}字典而不是单个 DataFrame传入的工作表名必须真实存在于工作簿中否则抛出ValueError错误信息形如no matching sheet found when sheet_name is ...此时应检查 Excel 文件里实际的工作表名拼写。如果你不确定文件里有哪些工作表、或想先确认目标工作表存在可以按上面的报错提示核对名称后再重试。何时需要换用备选引擎fastexcelcalamine引擎可以读取.xlsx、.xlsb、.xls等主要 Excel 工作簿格式且文档称其显著快于其他两个选项因此应作为默认选择。只有当 fastexcel 无法解析某个具体文件时才考虑切换到备选引擎例如df pl.read_excel( docs/assets/data/path.xlsx, sheet_nameSales, enginexlsx2csv, )xlsx2csv引擎会把 .xlsx 先转成内存中的 CSV 再交给 Polars 的 CSV 读取器解析openpyxl引擎更慢但可作为读取困难文件的兜底。切换引擎时sheet_name的用法不变。另有一个版本限制使用 calamine 引擎从字节内容bytes/BytesIO读取时要求fastexcel 0.10否则会抛出ModuleUpgradeRequiredError并提示当前版本。读取结果与常见问题判断指定工作表读取成功时得到pl.DataFrame多表读取得到字典若指定位置没有数据默认会抛出NoDataError把raise_if_empty设为False则改为返回一个空 DataFrame无列列类型推断不准时可用schema_overrides指定列类型或用infer_schema_length调整推断扫描的行数设为None表示扫描整个工作簿来确定 dtype大文件会变慢该参数仅 calamine 和 xlsx2csv 引擎支持。进一步用法如table_name读取命名表、read_options透传给 fastexcel 的load_sheet_by_name等可参考 Excel 用户指南 和 read_excel 源码中的 API 文档本文示例代码取自 用户指南代码片段。【免费下载链接】polarsExtremely fast Query Engine for DataFrames, written in Rust项目地址: https://gitcode.com/GitHub_Trending/po/polars创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考