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

Python Polars:如何在Lazy模式下获取LazyFrame的行数?

使用Polars Lazy模式统计大CSV行数的最优方案

针对70GB的超大CSV文件,用Polars的Lazy模式统计行数的最优方式是利用Polars的查询优化能力,只执行行数统计的必要操作,完全无需加载全量数据到内存:

方法一:直接统计数据行数

用scan_csv懒加载文件后,通过count()函数直接统计行数,Polars会自动优化查询逻辑,仅扫描文件计数,不会解析所有列的实际数据:

import polars as pl

# 懒加载目标CSV文件
lazy_df = pl.scan_csv("your_large_file.csv")
# 执行行数统计查询并获取结果
row_count = lazy_df.select(pl.count()).collect().item()
print(f"数据总行数:{row_count}")

Polars默认会识别文件表头并跳过,所以count()返回的是表头之外的纯数据行数量。

方法二:手动跳过表头(特殊场景)

如果你的CSV表头格式特殊,需要手动指定跳过行数,可以结合skip_rows参数再统计:

lazy_df = pl.scan_csv("your_large_file.csv", skip_rows=1)
row_count = lazy_df.select(pl.count()).collect().item()

方案优势

  • 全程基于Lazy模式,Polars查询优化器会将任务简化为仅扫描文件计数,内存占用极低,完全适配数十GB级别的大文件。
  • 底层由Rust实现,IO效率和计数速度远高于纯Python方案。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:24:29