@@ -674,7 +674,7 @@ def test_preserve_categories():
674
674
675
675
# ordered=True
676
676
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" )
678
678
tm .assert_index_equal (
679
679
df .groupby ("A" , sort = True , observed = False ).first ().index , index
680
680
)
@@ -684,8 +684,8 @@ def test_preserve_categories():
684
684
685
685
# ordered=False
686
686
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" )
689
689
tm .assert_index_equal (
690
690
df .groupby ("A" , sort = True , observed = False ).first ().index , sort_index
691
691
)
@@ -1193,3 +1193,17 @@ def test_groupby_categorical_axis_1(code):
1193
1193
result = df .groupby (cat , axis = 1 ).mean ()
1194
1194
expected = df .T .groupby (cat , axis = 0 ).mean ().T
1195
1195
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