From 1cd4037c52331fdbb63d38ceb34147f8a3265843 Mon Sep 17 00:00:00 2001 From: Brock Date: Tue, 7 Feb 2023 17:24:20 -0800 Subject: [PATCH 1/2] REF: simplify aggregate_frame --- pandas/core/groupby/generic.py | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/pandas/core/groupby/generic.py b/pandas/core/groupby/generic.py index fd07b472fc3da..fa704d1569275 100644 --- a/pandas/core/groupby/generic.py +++ b/pandas/core/groupby/generic.py @@ -269,11 +269,8 @@ def aggregate(self, func=None, *args, engine=None, engine_kwargs=None, **kwargs) result = self._aggregate_named(func, *args, **kwargs) # result is a dict whose keys are the elements of result_index - index = self.grouper.result_index - result = Series(result, index=index) - if not self.as_index: - result = self._insert_inaxis_grouper(result) - result.index = default_index(len(result)) + result = Series(result, index=self.grouper.result_index) + result = self._wrap_aggregated_output(result) return result agg = aggregate @@ -1358,17 +1355,9 @@ def _aggregate_frame(self, func, *args, **kwargs) -> DataFrame: obj = self._obj_with_exclusions result: dict[Hashable, NDFrame | np.ndarray] = {} - if self.axis == 0: - # test_pass_args_kwargs_duplicate_columns gets here with non-unique columns - for name, data in self.grouper.get_iterator(obj, self.axis): - fres = func(data, *args, **kwargs) - result[name] = fres - else: - # we get here in a number of test_multilevel tests - for name in self.indices: - grp_df = self.get_group(name, obj=obj) - fres = func(grp_df, *args, **kwargs) - result[name] = fres + for name, grp_df in self.grouper.get_iterator(obj, self.axis): + fres = func(grp_df, *args, **kwargs) + result[name] = fres result_index = self.grouper.result_index other_ax = obj.axes[1 - self.axis] From b554ab570af2358dbcb58a7f565f6a6b7b10d44a Mon Sep 17 00:00:00 2001 From: Brock Date: Tue, 7 Feb 2023 17:45:11 -0800 Subject: [PATCH 2/2] simplify column name-pinning --- pandas/core/groupby/generic.py | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/pandas/core/groupby/generic.py b/pandas/core/groupby/generic.py index fa704d1569275..3850f6bc12efd 100644 --- a/pandas/core/groupby/generic.py +++ b/pandas/core/groupby/generic.py @@ -1311,19 +1311,9 @@ def aggregate(self, func=None, *args, engine=None, engine_kwargs=None, **kwargs) result = self._aggregate_frame(func) else: - sobj = self._selected_obj - - if isinstance(sobj, Series): - # GH#35246 test_groupby_as_index_select_column_sum_empty_df - result.columns = self._obj_with_exclusions.columns.copy() - else: - # Retain our column names - result.columns._set_names( - sobj.columns.names, level=list(range(sobj.columns.nlevels)) - ) - # select everything except for the last level, which is the one - # containing the name of the function(s), see GH#32040 - result.columns = result.columns.droplevel(-1) + # GH#32040, GH#35246 + # e.g. test_groupby_as_index_select_column_sum_empty_df + result.columns = self._obj_with_exclusions.columns.copy() if not self.as_index: result = self._insert_inaxis_grouper(result)