Rustプログラムでpolarsの空DataFrameを作る

ぶっちゃけ、公式ドキュメントですぐにわからなかったのでメモ。

やりたかったこと

ArcやRwLockを使って、DataFrameにデータの追加と読み込みを別スレッドにしたく、 DataFrameの初期化で空のDataFrameが欲しかった。

結論

スキーマを使わない場合は、default()を使用する。

use polars_core::prelude::*;

fn main() {
    let df = DataFrame::default();
    println!("{:?}", df);
    assert!(df.is_empty());
}

でも今回のような使用用途だと、スキーマが必要。 スキーマを定義したい場合はこちら

use polars_core::prelude::*;

fn main() {
    let sc: Schema = Schema::from_iter(vec![
        Field::new("Thing", DataType::String), 
        Field::new("Diameter (m)", DataType::Float64)
        ]);
    let df = DataFrame::from(&sc);
    println!("{:?}", df);
    assert!(df.is_empty());
}

あと書き

できればSchemaはstructとかから生成できるといいのだが調査中