@@ -807,3 +807,31 @@ def test_loc_with_non_string_categories(self, idx_values, ordered):
807807 result .loc [sl , "A" ] = ["qux" , "qux2" ]
808808 expected = DataFrame ({"A" : ["qux" , "qux2" , "baz" ]}, index = cat_idx )
809809 tm .assert_frame_equal (result , expected )
810+
811+ @pytest .mark .parametrize (
812+ "categories" ,
813+ [
814+ pytest .param (["a" , "b" , "c" ], id = "str" ),
815+ pytest .param (
816+ [pd .Interval (0 , 1 ), pd .Interval (1 , 2 ), pd .Interval (2 , 3 )],
817+ id = "pd.Interval" ,
818+ ),
819+ ],
820+ )
821+ def test_reorder_index_with_categories (self , categories ):
822+ # GH23452
823+ df = DataFrame (
824+ {"foo" : range (len (categories ))},
825+ index = CategoricalIndex (
826+ data = categories , categories = categories , ordered = True
827+ ),
828+ )
829+ df .index = df .index .reorder_categories (df .index .categories [::- 1 ])
830+ result = df .sort_index ()
831+ expected = DataFrame (
832+ {"foo" : reversed (range (len (categories )))},
833+ index = CategoricalIndex (
834+ data = categories [::- 1 ], categories = categories [::- 1 ], ordered = True
835+ ),
836+ )
837+ tm .assert_frame_equal (result , expected )
0 commit comments