Function polars_core::utils::accumulate_dataframes_vertical
source · pub fn accumulate_dataframes_vertical<I>(dfs: I) -> PolarsResult<DataFrame>where
I: IntoIterator<Item = DataFrame>,Expand description
This takes ownership of the DataFrame so that drop is called earlier.
Examples found in repository?
src/frame/groupby/mod.rs (line 886)
870 871 872 873 874 875 876 877 878 879 880 881 882 883 884 885 886 887 888 889 890 891 892 893 894 895 896 897 898 899 900 901 902 903 904 905 906 907 908 909 910 911
pub fn par_apply<F>(&self, f: F) -> PolarsResult<DataFrame>
where
F: Fn(DataFrame) -> PolarsResult<DataFrame> + Send + Sync,
{
let df = self.prepare_apply()?;
let dfs = self
.get_groups()
.par_iter()
.map(|g| {
// safety
// groups are in bounds
let sub_df = unsafe { take_df(&df, g) };
f(sub_df)
})
.collect::<PolarsResult<Vec<_>>>()?;
let mut df = accumulate_dataframes_vertical(dfs)?;
df.as_single_chunk();
Ok(df)
}
/// Apply a closure over the groups as a new DataFrame.
pub fn apply<F>(&self, mut f: F) -> PolarsResult<DataFrame>
where
F: FnMut(DataFrame) -> PolarsResult<DataFrame> + Send + Sync,
{
let df = self.prepare_apply()?;
let dfs = self
.get_groups()
.iter()
.map(|g| {
// safety
// groups are in bounds
let sub_df = unsafe { take_df(&df, g) };
f(sub_df)
})
.collect::<PolarsResult<Vec<_>>>()?;
let mut df = accumulate_dataframes_vertical(dfs)?;
df.as_single_chunk();
Ok(df)
}