diff --git a/pandas/core/groupby/generic.py b/pandas/core/groupby/generic.py index 45914519c0a94..f4c69ea9d89db 100644 --- a/pandas/core/groupby/generic.py +++ b/pandas/core/groupby/generic.py @@ -1120,7 +1120,7 @@ def cast_agg_result(result, values: ArrayLike, how: str) -> ArrayLike: return result - def py_fallback(bvalues: ArrayLike) -> ArrayLike: + def py_fallback(values: ArrayLike) -> ArrayLike: # if self.grouper.aggregate fails, we fall back to a pure-python # solution @@ -1128,11 +1128,12 @@ def py_fallback(bvalues: ArrayLike) -> ArrayLike: obj: FrameOrSeriesUnion # call our grouper again with only this block - if isinstance(bvalues, ExtensionArray): + if isinstance(values, ExtensionArray) or values.ndim == 1: # TODO(EA2D): special case not needed with 2D EAs - obj = Series(bvalues) + obj = Series(values) else: - obj = DataFrame(bvalues.T) + # TODO special case not needed with ArrayManager + obj = DataFrame(values.T) if obj.shape[1] == 1: # Avoid call to self.values that can occur in DataFrame # reductions; see GH#28949 diff --git a/pandas/tests/groupby/aggregate/test_aggregate.py b/pandas/tests/groupby/aggregate/test_aggregate.py index 96413758e9cb0..ca96cc8b17638 100644 --- a/pandas/tests/groupby/aggregate/test_aggregate.py +++ b/pandas/tests/groupby/aggregate/test_aggregate.py @@ -495,7 +495,6 @@ def test_agg_index_has_complex_internals(index): tm.assert_frame_equal(result, expected) -@td.skip_array_manager_not_yet_implemented # TODO(ArrayManager) agg py_fallback def test_agg_split_block(): # https://github.com/pandas-dev/pandas/issues/31522 df = DataFrame( @@ -513,7 +512,6 @@ def test_agg_split_block(): tm.assert_frame_equal(result, expected) -@td.skip_array_manager_not_yet_implemented # TODO(ArrayManager) agg py_fallback def test_agg_split_object_part_datetime(): # https://github.com/pandas-dev/pandas/pull/31616 df = DataFrame( @@ -1205,7 +1203,6 @@ def test_aggregate_datetime_objects(): tm.assert_series_equal(result, expected) -@td.skip_array_manager_not_yet_implemented # TODO(ArrayManager) agg py_fallback def test_aggregate_numeric_object_dtype(): # https://github.com/pandas-dev/pandas/issues/39329 # simplified case: multiple object columns where one is all-NaN