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

如何在Rust中使用Polars读取Parquet文件并遍历行?

在Rust中使用Polars读取Parquet文件并遍历行

1. 添加依赖

首先在你的Cargo.toml中添加Polars及Parquet相关依赖,确保启用parquet特性:

[dependencies]
polars = { version = "0.35", features = ["parquet", "fmt"] }

(注:版本号可根据当前最新稳定版调整,fmt特性用于方便打印行数据)

2. 读取Parquet文件为Polars DataFrame

使用ParquetReader从路径读取文件,返回一个DataFrame对象:

use polars::prelude::*;
use std::error::Error;

fn main() -> Result<(), Box<dyn Error>> {
    // 读取Parquet文件
    let df = ParquetReader::from_path("your_file.parquet")?
        .finish()?;

    // 可选:打印DataFrame基本信息,确认读取成功
    println!("{}", df);
    Ok(())
}

3. 遍历每一行数据

Polars提供了多种遍历行的方式,最直接的是使用iter_rows()方法:

// 接上面的代码,在读取df之后
for row in df.iter_rows() {
    // row是一个&[AnyValue<'_>],可以访问每个字段的值
    println!("Row content: {:?}", row);

    // 示例:获取特定列的值(假设第一列是字符串,第二列是整数)
    if let (Some(AnyValue::Str(s)), Some(AnyValue::Int32(i))) = (row.get(0), row.get(1)) {
        println!("String column: {}, Int column: {}", s, i);
    }
}

如果需要更类型安全的遍历,可以指定类型提取字段值:

// 示例:类型安全获取值
for row in df.iter_rows() {
    let name: &str = row.get(0).unwrap().try_extract()?;
    let age: i32 = row.get(1).unwrap().try_extract()?;
    println!("Name: {}, Age: {}", name, age);
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 11:37:36