|
89 | 89 | MultiIndex,
|
90 | 90 | all_indexes_same,
|
91 | 91 | )
|
92 |
| -import pandas.core.indexes.base as ibase |
93 | 92 | from pandas.core.series import Series
|
94 | 93 | from pandas.core.util.numba_ import maybe_use_numba
|
95 | 94 |
|
@@ -481,14 +480,13 @@ def _get_index() -> Index:
|
481 | 480 | if isinstance(values[0], dict):
|
482 | 481 | # GH #823 #24880
|
483 | 482 | index = _get_index()
|
484 |
| - result: FrameOrSeriesUnion = self._reindex_output( |
485 |
| - self.obj._constructor_expanddim(values, index=index) |
486 |
| - ) |
| 483 | + res_df = self.obj._constructor_expanddim(values, index=index) |
| 484 | + res_df = self._reindex_output(res_df) |
487 | 485 | # if self.observed is False,
|
488 | 486 | # keep all-NaN rows created while re-indexing
|
489 |
| - result = result.stack(dropna=self.observed) |
490 |
| - result.name = self._selection_name |
491 |
| - return result |
| 487 | + res_ser = res_df.stack(dropna=self.observed) |
| 488 | + res_ser.name = self._selection_name |
| 489 | + return res_ser |
492 | 490 | elif isinstance(values[0], (Series, DataFrame)):
|
493 | 491 | return self._concat_objects(keys, values, not_indexed_same=not_indexed_same)
|
494 | 492 | else:
|
@@ -1019,13 +1017,18 @@ def aggregate(self, func=None, *args, engine=None, engine_kwargs=None, **kwargs)
|
1019 | 1017 |
|
1020 | 1018 | # grouper specific aggregations
|
1021 | 1019 | if self.grouper.nkeys > 1:
|
| 1020 | + # test_groupby_as_index_series_scalar gets here with 'not self.as_index' |
1022 | 1021 | return self._python_agg_general(func, *args, **kwargs)
|
1023 | 1022 | elif args or kwargs:
|
| 1023 | + # test_pass_args_kwargs gets here (with and without as_index) |
| 1024 | + # can't return early |
1024 | 1025 | result = self._aggregate_frame(func, *args, **kwargs)
|
1025 | 1026 |
|
1026 | 1027 | elif self.axis == 1:
|
1027 | 1028 | # _aggregate_multiple_funcs does not allow self.axis == 1
|
| 1029 | + # Note: axis == 1 precludes 'not self.as_index', see __init__ |
1028 | 1030 | result = self._aggregate_frame(func)
|
| 1031 | + return result |
1029 | 1032 |
|
1030 | 1033 | else:
|
1031 | 1034 |
|
@@ -1055,7 +1058,7 @@ def aggregate(self, func=None, *args, engine=None, engine_kwargs=None, **kwargs)
|
1055 | 1058 |
|
1056 | 1059 | if not self.as_index:
|
1057 | 1060 | self._insert_inaxis_grouper_inplace(result)
|
1058 |
| - result.index = np.arange(len(result)) |
| 1061 | + result.index = Index(range(len(result))) |
1059 | 1062 |
|
1060 | 1063 | return result._convert(datetime=True)
|
1061 | 1064 |
|
@@ -1181,7 +1184,9 @@ def _wrap_applied_output(self, data, keys, values, not_indexed_same=False):
|
1181 | 1184 | if self.as_index:
|
1182 | 1185 | return self.obj._constructor_sliced(values, index=key_index)
|
1183 | 1186 | else:
|
1184 |
| - result = DataFrame(values, index=key_index, columns=[self._selection]) |
| 1187 | + result = self.obj._constructor( |
| 1188 | + values, index=key_index, columns=[self._selection] |
| 1189 | + ) |
1185 | 1190 | self._insert_inaxis_grouper_inplace(result)
|
1186 | 1191 | return result
|
1187 | 1192 | else:
|
@@ -1664,8 +1669,8 @@ def _wrap_transformed_output(
|
1664 | 1669 |
|
1665 | 1670 | def _wrap_agged_manager(self, mgr: Manager2D) -> DataFrame:
|
1666 | 1671 | if not self.as_index:
|
1667 |
| - index = np.arange(mgr.shape[1]) |
1668 |
| - mgr.set_axis(1, ibase.Index(index)) |
| 1672 | + index = Index(range(mgr.shape[1])) |
| 1673 | + mgr.set_axis(1, index) |
1669 | 1674 | result = self.obj._constructor(mgr)
|
1670 | 1675 |
|
1671 | 1676 | self._insert_inaxis_grouper_inplace(result)
|
@@ -1793,7 +1798,7 @@ def nunique(self, dropna: bool = True) -> DataFrame:
|
1793 | 1798 | results.columns.names = obj.columns.names # TODO: do at higher level?
|
1794 | 1799 |
|
1795 | 1800 | if not self.as_index:
|
1796 |
| - results.index = ibase.default_index(len(results)) |
| 1801 | + results.index = Index(range(len(results))) |
1797 | 1802 | self._insert_inaxis_grouper_inplace(results)
|
1798 | 1803 |
|
1799 | 1804 | return results
|
|
0 commit comments