Skip to content

CSV

读取与写入

读取CSV文件应该看起来很熟悉:

read_csv

df = pl.read_csv("docs/assets/data/path.csv")

CsvReader · 在功能 csv 上可用

use polars::prelude::*;

let mut df = df!(
    "foo" => &[1, 2, 3],
    "bar" => &[None, Some("bak"), Some("baz")],
)
.unwrap();

let mut file = std::fs::File::create("docs/assets/data/path.csv").unwrap();
CsvWriter::new(&mut file).finish(&mut df).unwrap();

let df = CsvReadOptions::default()
    .try_into_reader_with_file_path(Some("docs/assets/data/path.csv".into()))
    .unwrap()
    .finish()
    .unwrap();

编写CSV文件与write_csv函数类似:

write_csv

df = pl.DataFrame({"foo": [1, 2, 3], "bar": [None, "bak", "baz"]})
df.write_csv("docs/assets/data/path.csv")

CsvWriter · 在功能 csv 上可用

let mut df = df!(
    "foo" => &[1, 2, 3],
    "bar" => &[None, Some("bak"), Some("baz")],
)
.unwrap();

let mut file = std::fs::File::create("docs/assets/data/path.csv").unwrap();
CsvWriter::new(&mut file).finish(&mut df).unwrap();

扫描

Polars 允许您扫描CSV输入。扫描会延迟文件的实际解析,并返回一个称为LazyFrame的惰性计算持有者。

scan_csv

df = pl.scan_csv("docs/assets/data/path.csv")

LazyCsvReader · 功能 csv 可用

let lf = LazyCsvReader::new("docs/assets/data/path.csv")
    .finish()
    .unwrap();

如果您想知道为什么这是可取的,您可以阅读更多关于这些Polars优化的信息 这里