diff --git a/pandas/core/groupby/generic.py b/pandas/core/groupby/generic.py index b2380af807e3d..1d03652bd0367 100644 --- a/pandas/core/groupby/generic.py +++ b/pandas/core/groupby/generic.py @@ -2393,7 +2393,7 @@ def _wrap_applied_output( if is_transform: # GH#47787 see test_group_on_empty_multiindex res_index = data.index - elif not self.group_keys: + elif not self.group_keys or not self.as_index: res_index = None else: res_index = self._grouper.result_index diff --git a/pandas/tests/groupby/test_apply.py b/pandas/tests/groupby/test_apply.py index 1d8bf5b442b6c..468dfac76f7ac 100644 --- a/pandas/tests/groupby/test_apply.py +++ b/pandas/tests/groupby/test_apply.py @@ -1541,3 +1541,25 @@ def addstore(x): tm.assert_frame_equal(store[0], expected_out_0) tm.assert_frame_equal(store[1], expected_out_1) + + +def test_apply_as_index_false_empty_index_name(): + df = DataFrame({"A": [4, 4, 4], "B": [9, 9, 9]}) + result = df.groupby("A", as_index=False).apply(lambda x: x) + + empty_df = df.iloc[:0] + result_empty = empty_df.groupby("A", as_index=False).apply(lambda x: x) + + expected = DataFrame( + {"B": [9, 9, 9]}, + index=Index([0, 1, 2], dtype="int64"), + ) + expected.index.name = None + tm.assert_frame_equal(result, expected) + + expected_empty = DataFrame( + {"B": Series([], dtype="int64")}, + index=Index([], dtype="int64"), + ) + expected_empty.index.name = None + tm.assert_frame_equal(result_empty, expected_empty)