def _aggregate_series_pure_python( self, obj: Series, func: Callable ) -> npt.NDArray[np.object_]: ids, _, ngroups = self.group_info counts = np.zeros(ngroups, dtype=int) result = np.empty(ngroups, dtype="O") initialized = False # equiv: splitter = self._get_splitter(obj, axis=0) splitter = get_splitter(obj, ids, ngroups, axis=0) for i, group in enumerate(splitter): res = func(group) res = libreduction.extract_result(res) if not initialized: # We only do this validation on the first iteration libreduction.check_result_array(res, group.dtype) initialized = True counts[i] = group.shape[0] result[i] = res return result
def _aggregate_series_pure_python(self, obj: Series, func: F) -> np.ndarray: # -> np.ndarray[object] ids, _, ngroups = self.group_info counts = np.zeros(ngroups, dtype=int) result = np.empty(ngroups, dtype="O") initialized = False # equiv: splitter = self._get_splitter(obj, axis=0) splitter = get_splitter(obj, ids, ngroups, axis=0) for i, group in enumerate(splitter): # Each step of this loop corresponds to # libreduction._BaseGrouper._apply_to_group res = func(group) res = libreduction.extract_result(res) if not initialized: # We only do this validation on the first iteration libreduction.check_result_array(res, group.dtype) initialized = True counts[i] = group.shape[0] result[i] = res return result
def _aggregate_series_pure_python(self, obj: Series, func: F): group_index, _, ngroups = self.group_info counts = np.zeros(ngroups, dtype=int) result = np.empty(ngroups, dtype="O") initialized = False splitter = get_splitter(obj, group_index, ngroups, axis=0) for label, group in splitter: # Each step of this loop corresponds to # libreduction._BaseGrouper._apply_to_group res = func(group) res = libreduction.extract_result(res) if not initialized: # We only do this validation on the first iteration libreduction.check_result_array(res, 0) initialized = True counts[label] = group.shape[0] result[label] = res out = lib.maybe_convert_objects(result, try_float=False) out = maybe_cast_result(out, obj, numeric_only=True) return out, counts
def _aggregate_series_pure_python(self, obj: Series, func: F): group_index, _, ngroups = self.group_info counts = np.zeros(ngroups, dtype=int) result = np.empty(ngroups, dtype="O") initialized = False splitter = get_splitter(obj, group_index, ngroups, axis=0) for label, group in splitter: # Each step of this loop corresponds to # libreduction._BaseGrouper._apply_to_group res = func(group) res = libreduction.extract_result(res) if not initialized: # We only do this validation on the first iteration libreduction.check_result_array(res, 0) initialized = True counts[label] = group.shape[0] result[label] = res result = lib.maybe_convert_objects(result, try_float=False) # error: Incompatible types in assignment (expression has type # "Union[ExtensionArray, ndarray]", variable has type "ndarray") result = maybe_cast_result( # type: ignore[assignment] result, obj, numeric_only=True) return result, counts