use num::*;
use std::iter::Sum;
use crate::prelude::*;
pub struct DataFrameGroupBy<T>
where
T: BlackJackData,
{
groups: Vec<SeriesGroupBy<T>>,
}
impl<T> DataFrameGroupBy<T>
where
T: BlackJackData + 'static,
{
pub fn new(groups: Vec<SeriesGroupBy<T>>) -> Self {
DataFrameGroupBy { groups }
}
pub fn sum(&self) -> DataFrame<i32>
where
T: BlackJackData + Copy + Sum + Num + Send + Ord,
{
let mut df = DataFrame::new();
let _ = self
.groups
.iter()
.map(|series_groupby| series_groupby.sum())
.map(|series| df.add_column(series).unwrap())
.collect::<Vec<()>>();
df
}
}