File tree 2 files changed +12
-9
lines changed
2 files changed +12
-9
lines changed Original file line number Diff line number Diff line change 80
80
Index ,
81
81
MultiIndex ,
82
82
all_indexes_same ,
83
+ default_index ,
83
84
)
84
85
from pandas .core .series import Series
85
86
from pandas .core .util .numba_ import maybe_use_numba
@@ -161,15 +162,16 @@ class SeriesGroupBy(GroupBy[Series]):
161
162
def _wrap_agged_manager (self , mgr : Manager2D ) -> Series :
162
163
single = mgr .iget (0 )
163
164
ser = self .obj ._constructor (single , name = self .obj .name )
164
- ser . index = self . grouper . result_index
165
+ # NB: caller is responsible for setting ser.index
165
166
return ser
166
167
167
168
def _get_data_to_aggregate (self ) -> Manager2D :
168
- obj = self ._obj_with_exclusions
169
- df = obj .to_frame ()
170
- df .columns = [obj .name ] # in case name is None, we need to overwrite [0]
171
-
172
- return df ._mgr
169
+ ser = self ._obj_with_exclusions
170
+ single = ser ._mgr
171
+ columns = default_index (1 )
172
+ # Much faster than using ser.to_frame() since we avoid inferring columns
173
+ # from scalar
174
+ return single .to_2d_mgr (columns )
173
175
174
176
def _iterate_slices (self ) -> Iterable [Series ]:
175
177
yield self ._selected_obj
Original file line number Diff line number Diff line change @@ -1763,6 +1763,8 @@ def hfunc(bvalues: ArrayLike) -> ArrayLike:
1763
1763
# _wrap_agged_manager() returns. GH 35028
1764
1764
with com .temp_setattr (self , "observed" , True ):
1765
1765
result = self ._wrap_agged_manager (new_mgr )
1766
+ if result .ndim == 1 :
1767
+ result .index = self .grouper .result_index
1766
1768
1767
1769
return self ._reindex_output (result , fill_value = 0 )
1768
1770
@@ -2715,9 +2717,7 @@ def blk_func(values: ArrayLike) -> ArrayLike:
2715
2717
mgr .grouped_reduce (blk_func , ignore_failures = False )
2716
2718
2717
2719
if is_ser :
2718
- res = obj ._constructor_expanddim (res_mgr )
2719
- res = res [res .columns [0 ]] # aka res.squeeze()
2720
- res .name = obj .name
2720
+ res = self ._wrap_agged_manager (res_mgr )
2721
2721
else :
2722
2722
res = obj ._constructor (res_mgr )
2723
2723
@@ -3164,6 +3164,7 @@ def blk_func(values: ArrayLike) -> ArrayLike:
3164
3164
3165
3165
if orig_ndim == 1 :
3166
3166
out = self ._wrap_agged_manager (res_mgr )
3167
+ out .index = self .grouper .result_index
3167
3168
else :
3168
3169
out = type (obj )(res_mgr )
3169
3170
You can’t perform that action at this time.
0 commit comments