我正在使用极坐标,我想在加载数据框时定义列的类型。在熊猫中,我可以使用dtype
:
df=pd.read_csv("iris.csv", dtype={'petal_length':str})
我正在尝试在极地做同样的事情,但直到现在都没有成功。这是我尝试过的:
use polars::prelude::*;
use std::fs::File;
use std::collections::HashMap;
fn main() {
let df = example();
println!("{:?}", df.expect("Cannot find dataframe").head(Some(10)))
}
fn example() -> Result<DataFrame> {
let file = File::open("iris.csv")
.expect("could not read file");
let mut myschema = HashMap::new();
myschema.insert("sepal_length", f64);
myschema.insert("sepal_width", f64);
myschema.insert("petal_length",String);
myschema.insert("petal_width", f64);
myschema.insert("species", String);
CsvReader::new(file)
.with_schema(myschema)
.has_header(true)
.finish()
}
我的疑问是实现with_schema
期望的数据类型是什么?我打印了使用加载的 DataFrame 的架构infer_schema(None)
。这打印了一个看起来像字典的对象:
Schema { fields: [Field { name: "sepal_length", data_type: Float64 }, Field { name: "sepal_width", data_type: Float64 }, Field { name: "petal_length", data_type: Float64 }, Field { name: "petal_width", data_type: Float64 }, Field { name: "species", data_type: Utf8 }] }
但我不知道应该使用什么对象来实现我的模式。
另外,有一种方法可以指定一个变量的类型,而不是全部?