如何在使用 CsvReader 时在 Polars DataFrame 中添加列名称

Dat*_*cho 2 rust rust-polars

我可以读取文件中没有列标题的 csv 文件。通过以下代码在 Rust 中使用极坐标:

use polars::prelude::*;

fn read_wine_data() -> Result<DataFrame> {
    let file = "datastore/wine.data";
    CsvReader::from_path(file)?
        .has_header(false)
        .finish()
}


fn main() {
    let df = read_wine_data();
    match df {
        Ok(content) => println!("{:?}", content.head(Some(10))),
        Err(error) => panic!("Problem reading file: {:?}", error)
    }
}

Run Code Online (Sandbox Code Playgroud)

但现在我想在读取时或读取后将列名添加到数据框中,如何添加列名。这是一个列名称向量:

let COLUMN_NAMES = vec![
    "Class label", "Alcohol",
    "Malic acid", "Ash",
    "Alcalinity of ash", "Magnesium",
    "Total phenols", "Flavanoids",
    "Nonflavanoid phenols",
    "Proanthocyanins",
    "Color intensity", "Hue",
    "OD280/OD315 of diluted wines",
    "Proline"
];
Run Code Online (Sandbox Code Playgroud)

如何将这些名称添加到数据框中。可以通过以下代码下载数据:

wget https://archive.ics.uci.edu/ml/machine-learning-databases/wine/wine.data
Run Code Online (Sandbox Code Playgroud)

Eri*_*ers 5

这似乎有效,通过创建一个模式对象并使用 CsvReader 上的 with_schema 方法将其传递:

\n
use polars::prelude::*;\nuse polars::datatypes::DataType;\n\nfn read_wine_data() -> Result<DataFrame> {\n  let file = "datastore/wine.data";\n\n  let mut schema: Schema = Schema::new();\n  schema.with_column("wine".to_string(), DataType::Float32);\n\n  CsvReader::from_path(file)?\n      .has_header(false)\n      .with_schema(&schema)\n      .finish()\n }\n\n\nfn main() {\n    let df = read_wine_data();\n    match df {\n        Ok(content) => println!("{:?}", content.head(Some(10))),\n        Err(error) => panic!("Problem reading file: {:?}", error)\n    }\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当然,我不知道列名应该是什么,但这是我添加一列时得到的输出:

\n
shape: (10, 1)\n\xe2\x94\x8c\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x90\n\xe2\x94\x82 wine \xe2\x94\x82\n\xe2\x94\x82 ---  \xe2\x94\x82\n\xe2\x94\x82 f32  \xe2\x94\x82\n\xe2\x95\x9e\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\x90\xe2\x95\xa1\n\xe2\x94\x82 1.0  \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1.0  \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1.0  \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1.0  \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 ...  \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1.0  \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1.0  \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1.0  \xe2\x94\x82\n\xe2\x94\x9c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x95\x8c\xe2\x94\xa4\n\xe2\x94\x82 1.0  \xe2\x94\x82\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x80\xe2\x94\x98\n
Run Code Online (Sandbox Code Playgroud)\n