diff --git a/pandas/core/groupby/ops.py b/pandas/core/groupby/ops.py index d1a46c1c36439..26b71b396f4b5 100644 --- a/pandas/core/groupby/ops.py +++ b/pandas/core/groupby/ops.py @@ -327,6 +327,14 @@ def _ea_wrap_cython_operation( re-wrap if appropriate. """ # TODO: general case implementation overridable by EAs. + if isinstance(values, BaseMaskedArray) and self.uses_mask(): + return self._masked_ea_wrap_cython_operation( + values, + min_count=min_count, + ngroups=ngroups, + comp_ids=comp_ids, + **kwargs, + ) orig_values = values if isinstance(orig_values, (DatetimeArray, PeriodArray)): @@ -614,22 +622,13 @@ def cython_operation( if not isinstance(values, np.ndarray): # i.e. ExtensionArray - if isinstance(values, BaseMaskedArray) and self.uses_mask(): - return self._masked_ea_wrap_cython_operation( - values, - min_count=min_count, - ngroups=ngroups, - comp_ids=comp_ids, - **kwargs, - ) - else: - return self._ea_wrap_cython_operation( - values, - min_count=min_count, - ngroups=ngroups, - comp_ids=comp_ids, - **kwargs, - ) + return self._ea_wrap_cython_operation( + values, + min_count=min_count, + ngroups=ngroups, + comp_ids=comp_ids, + **kwargs, + ) return self._cython_op_ndim_compat( values,