@@ -674,7 +674,7 @@ def test_preserve_categories():
674674
675675 # ordered=True
676676 df = DataFrame ({"A" : Categorical (list ("ba" ), categories = categories , ordered = True )})
677- index = CategoricalIndex (categories , categories , ordered = True )
677+ index = CategoricalIndex (categories , categories , ordered = True , name = "A" )
678678 tm .assert_index_equal (
679679 df .groupby ("A" , sort = True , observed = False ).first ().index , index
680680 )
@@ -684,8 +684,8 @@ def test_preserve_categories():
684684
685685 # ordered=False
686686 df = DataFrame ({"A" : Categorical (list ("ba" ), categories = categories , ordered = False )})
687- sort_index = CategoricalIndex (categories , categories , ordered = False )
688- nosort_index = CategoricalIndex (list ("bac" ), list ("bac" ), ordered = False )
687+ sort_index = CategoricalIndex (categories , categories , ordered = False , name = "A" )
688+ nosort_index = CategoricalIndex (list ("bac" ), list ("bac" ), ordered = False , name = "A" )
689689 tm .assert_index_equal (
690690 df .groupby ("A" , sort = True , observed = False ).first ().index , sort_index
691691 )
@@ -1193,3 +1193,17 @@ def test_groupby_categorical_axis_1(code):
11931193 result = df .groupby (cat , axis = 1 ).mean ()
11941194 expected = df .T .groupby (cat , axis = 0 ).mean ().T
11951195 assert_frame_equal (result , expected )
1196+
1197+
1198+ def test_groupby_cat_preserves_structure (observed ):
1199+ # GH 28787
1200+ df = DataFrame ([("Bob" , 1 ), ("Greg" , 2 )], columns = ["Name" , "Item" ])
1201+ expected = df .copy ()
1202+
1203+ result = (
1204+ df .groupby ("Name" , observed = observed )
1205+ .agg (pd .DataFrame .sum , skipna = True )
1206+ .reset_index ()
1207+ )
1208+
1209+ assert_frame_equal (result , expected )
0 commit comments