polars_core/frame/
from.rsuse crate::prelude::*;
impl TryFrom<StructArray> for DataFrame {
type Error = PolarsError;
fn try_from(arr: StructArray) -> PolarsResult<Self> {
let (fld, _length, arrs, nulls) = arr.into_data();
polars_ensure!(
nulls.is_none(),
ComputeError: "cannot deserialize struct with nulls into a DataFrame"
);
let columns = fld
.iter()
.zip(arrs)
.map(|(fld, arr)| {
unsafe {
Series::_try_from_arrow_unchecked_with_md(
fld.name.clone(),
vec![arr],
fld.dtype(),
Some(&fld.metadata),
)
}
.map(Column::from)
})
.collect::<PolarsResult<Vec<_>>>()?;
DataFrame::new(columns)
}
}