def _aggregate_series_fast(self, obj: Series, func: F) -> npt.NDArray[np.object_]: # At this point we have already checked that # - obj.index is not a MultiIndex # - obj is backed by an ndarray, not ExtensionArray # - len(obj) > 0 func = com.is_builtin_func(func) ids, _, ngroups = self.group_info # avoids object / Series creation overhead indexer = get_group_index_sorter(ids, ngroups) obj = obj.take(indexer) ids = ids.take(indexer) sgrouper = libreduction.SeriesGrouper(obj, func, ids, ngroups) result, _ = sgrouper.get_result() return result
def _aggregate_series_fast(self, obj: Series, func: F): # At this point we have already checked that # - obj.index is not a MultiIndex # - obj is backed by an ndarray, not ExtensionArray # - len(obj) > 0 # - ngroups != 0 func = com.is_builtin_func(func) group_index, _, ngroups = self.group_info # avoids object / Series creation overhead indexer = get_group_index_sorter(group_index, ngroups) obj = obj.take(indexer) group_index = group_index.take(indexer) grouper = libreduction.SeriesGrouper(obj, func, group_index, ngroups) result, counts = grouper.get_result() return result, counts