use df_derive::ToDataFrame;
use df_derive::dataframe;
use df_derive::dataframe::ToDataFrameVec;
#[derive(ToDataFrame)]
struct Tensor {
label: String,
values: Vec<Vec<Vec<f64>>>,
counts: Vec<Vec<i32>>,
}
fn main() -> polars::prelude::PolarsResult<()> {
let tensors = vec![
Tensor {
label: "alpha".into(),
values: vec![vec![vec![1.0, 2.0], vec![3.0]], vec![vec![4.0, 5.0, 6.0]]],
counts: vec![vec![1, 2, 3], vec![]],
},
Tensor {
label: "beta".into(),
values: vec![],
counts: vec![vec![10]],
},
];
let df = tensors.as_slice().to_dataframe()?;
println!("Deep Vec<Vec<Vec<T>>> DataFrame:");
println!("{df}");
let schema = <Tensor as dataframe::ToDataFrame>::schema()?;
println!("\nSchema (each Vec layer becomes a List wrap):");
for (name, dtype) in schema {
println!(" {name}: {dtype:?}");
}
Ok(())
}