Skip to content

Commit 1bb128e

Browse files
authored
REF: simplify aggregate_frame, column-name-pinning (#51226)
* REF: simplify aggregate_frame * simplify column name-pinning
1 parent 797cd03 commit 1bb128e

File tree

1 file changed

+8
-29
lines changed

1 file changed

+8
-29
lines changed

pandas/core/groupby/generic.py

+8-29
Original file line numberDiff line numberDiff line change
@@ -269,11 +269,8 @@ def aggregate(self, func=None, *args, engine=None, engine_kwargs=None, **kwargs)
269269
result = self._aggregate_named(func, *args, **kwargs)
270270

271271
# result is a dict whose keys are the elements of result_index
272-
index = self.grouper.result_index
273-
result = Series(result, index=index)
274-
if not self.as_index:
275-
result = self._insert_inaxis_grouper(result)
276-
result.index = default_index(len(result))
272+
result = Series(result, index=self.grouper.result_index)
273+
result = self._wrap_aggregated_output(result)
277274
return result
278275

279276
agg = aggregate
@@ -1314,19 +1311,9 @@ def aggregate(self, func=None, *args, engine=None, engine_kwargs=None, **kwargs)
13141311
result = self._aggregate_frame(func)
13151312

13161313
else:
1317-
sobj = self._selected_obj
1318-
1319-
if isinstance(sobj, Series):
1320-
# GH#35246 test_groupby_as_index_select_column_sum_empty_df
1321-
result.columns = self._obj_with_exclusions.columns.copy()
1322-
else:
1323-
# Retain our column names
1324-
result.columns._set_names(
1325-
sobj.columns.names, level=list(range(sobj.columns.nlevels))
1326-
)
1327-
# select everything except for the last level, which is the one
1328-
# containing the name of the function(s), see GH#32040
1329-
result.columns = result.columns.droplevel(-1)
1314+
# GH#32040, GH#35246
1315+
# e.g. test_groupby_as_index_select_column_sum_empty_df
1316+
result.columns = self._obj_with_exclusions.columns.copy()
13301317

13311318
if not self.as_index:
13321319
result = self._insert_inaxis_grouper(result)
@@ -1358,17 +1345,9 @@ def _aggregate_frame(self, func, *args, **kwargs) -> DataFrame:
13581345
obj = self._obj_with_exclusions
13591346

13601347
result: dict[Hashable, NDFrame | np.ndarray] = {}
1361-
if self.axis == 0:
1362-
# test_pass_args_kwargs_duplicate_columns gets here with non-unique columns
1363-
for name, data in self.grouper.get_iterator(obj, self.axis):
1364-
fres = func(data, *args, **kwargs)
1365-
result[name] = fres
1366-
else:
1367-
# we get here in a number of test_multilevel tests
1368-
for name in self.indices:
1369-
grp_df = self.get_group(name, obj=obj)
1370-
fres = func(grp_df, *args, **kwargs)
1371-
result[name] = fres
1348+
for name, grp_df in self.grouper.get_iterator(obj, self.axis):
1349+
fres = func(grp_df, *args, **kwargs)
1350+
result[name] = fres
13721351

13731352
result_index = self.grouper.result_index
13741353
other_ax = obj.axes[1 - self.axis]

0 commit comments

Comments
 (0)