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

如何在Polars中将所有列读取为字符串类型?

如何将CSV所有列读取为字符串类型(Rust Polars)

要让Polars读取CSV时把所有列都转成字符串类型,你可以通过指定强制Schema来实现——也就是明确告诉阅读器所有列都用Utf8类型解析,跳过自动推断原数据类型的逻辑。分两种场景处理:

场景1:已知CSV的列名

直接构造包含所有列名、类型统一为Utf8的Schema,传给CsvReader的with_schema方法:

use polars::prelude::*;

// 构造全Utf8类型的Schema,列名替换成你的CSV实际列名
let schema = Schema::from(vec![
    Field::new("column_a", DataType::Utf8),
    Field::new("column_b", DataType::Utf8),
    Field::new("column_c", DataType::Utf8),
    // 依次添加所有列
]);

let df = CsvReader::from_path(filecsv)?
    .has_header(true)
    .with_schema(&schema) // 强制使用指定Schema解析
    .finish()?;

场景2:不知道CSV的列名

先读取表头获取所有列名,再动态生成全Utf8类型的Schema,最后用这个Schema读取数据:

use polars::prelude::*;

// 第一步:读取表头获取列名
let header_names = CsvReader::from_path(filecsv)?
    .has_header(true)
    .finish()?
    .get_column_names()
    .to_vec();

// 第二步:生成全Utf8类型的Schema
let schema = Schema::from(
    header_names.into_iter()
        .map(|col_name| Field::new(col_name, DataType::Utf8))
        .collect::<Vec<_>>()
);

// 第三步:用指定Schema读取完整数据
let df = CsvReader::from_path(filecsv)?
    .has_header(true)
    .with_schema(&schema)
    .finish()?;

这样处理后,不管原CSV里的列是数字还是其他类型,都会被统一解析为字符串类型的列。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 01:12:37