#polars #dataframe #plotters #egui #proc-macro #gui

iter-tuple

Rust通过proc-macro2结构Vec AnyValue遍历polars DataFrame的迭代器

2个版本

新增 0.3.8 2024年8月18日
0.3.7 2024年8月17日
0.2.5 2024年8月11日
0.1.3 2024年8月6日
0.1.2 2024年7月28日

数据库接口中排名 2147

Download history 253/week @ 2024-07-22 105/week @ 2024-07-29 705/week @ 2024-08-05 789/week @ 2024-08-12

每月下载量 1,852
2 个Crate中使用

MIT授权 MIT

25KB
411

iter-tuple

Rust通过proc-macro2结构Vec AnyValue遍历polars DataFrame的迭代器

如何使用

use iter_tuple::tuple_derive;
use iter_tuple::tuple_sqlite3; // optional (must use with tuple_derive)
use iter_tuple::struct_derive; // optional (must use with tuple_sqlite3)
use polars::prelude::{DataFrame, AnyValue, Schema}; // , Field, DataType
use anyvalue_dataframe::{row_schema, named_schema, to_any};

/// auto defines struct StTpl and sqlite3 trait with struct_derive (optional)
#[struct_derive((id, string), (UInt64, Utf8))]
/// auto defines sqlite3 trait for RecTpl with tuple_sqlite3 (optional)
#[tuple_sqlite3(UInt64, Utf8)]
/// auto defines struct RecTpl with tuple_derive
#[tuple_derive(UInt64, Utf8)]
pub type Tpl<'a> = (u64, &'a str);

pub fn main() {
  let rows = [
    (0, "a"),
    (1, "b"),
    (2, "c")
  ].into_iter().map(|r|
    row_schema(RecTpl::into_iter(r).collect())
    // row_schema(RecTpl::from(r).into_iter().collect()) // same as above
  ).collect::<Vec<_>>();

  let schema = Schema::from(&rows[0]);
  let df = DataFrame::from_rows_iter_and_schema(rows.iter(), &schema);
  let mut df = df.expect("create DataFrame");
  let n = vec!["id", "string"];
  df.set_column_names(&n).expect("set column names");
  let sc = named_schema(&df, n);
  assert_eq!(df.schema(), sc); // OK all

  let df = df.select(["string", "id"]).expect("select columns");
  println!("{:?}", df.head(Some(100)));
}

示例

要求

可选

授权

MIT授权

依赖

~285–740KB
~18K SLoC