CSV
读取与写入
读取 CSV 文件的方式应该很熟悉
df = pl.read_csv("docs/assets/data/path.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
函数类似
df = pl.DataFrame({"foo": [1, 2, 3], "bar": [None, "bak", "baz"]})
df.write_csv("docs/assets/data/path.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
的惰性计算持有者。
df = pl.scan_csv("docs/assets/data/path.csv")
let lf = LazyCsvReader::new("docs/assets/data/path.csv")
.finish()
.unwrap();
如果你想了解为什么这种方式值得推荐,可以在此处阅读更多关于 Polars 优化功能的信息。