This function gets called by ColumnFunction._apply(). After a ColumnFunction
        has been passed to Aggregator's constructor, the ColumnFunction can use this function
        to request the populated, aggregated columns that correspond to its ColumnReductions.

        Args:
            column_reduction (list[ColumnReduction])

        Returns:
            pd.DataFrame: A dataframe, where the column names are ColumnReductions.

def get_reduced(self, column_reductions):
        """This function gets called by ColumnFunction._apply(). After a ColumnFunction
        has been passed to Aggregator's constructor, the ColumnFunction can use this function
        to request the populated, aggregated columns that correspond to its ColumnReductions.

        Args:
            column_reduction (list[ColumnReduction])

        Returns:
            pd.DataFrame: A dataframe, where the column names are ColumnReductions.
        """
        for cr in column_reductions:
            if cr not in self.column_reductions:
                raise ValueError("Column reduction %r is not known to this Aggregator!" % cr)
        return self.reduced_df[column_reductions]