@@ -550,18 +550,36 @@ def test_sort_index(self):
550550 expected = frame .iloc [:, ::- 1 ]
551551 assert_frame_equal (result , expected )
552552
553- def test_sort_index_multiindex (self ):
553+ @pytest .mark .parametrize ("level" , ['A' , 0 ]) # GH 21052
554+ def test_sort_index_multiindex (self , level ):
554555 # GH13496
555556
556557 # sort rows by specified level of multi-index
557- mi = MultiIndex .from_tuples ([[2 , 1 , 3 ], [1 , 1 , 1 ]], names = list ('ABC' ))
558- df = DataFrame ([[1 , 2 ], [3 , 4 ]], mi )
558+ mi = MultiIndex .from_tuples ([
559+ [2 , 1 , 3 ], [2 , 1 , 2 ], [1 , 1 , 1 ]], names = list ('ABC' ))
560+ df = DataFrame ([[1 , 2 ], [3 , 4 ], [5 , 6 ]], index = mi )
561+
562+ expected_mi = MultiIndex .from_tuples ([
563+ [1 , 1 , 1 ],
564+ [2 , 1 , 2 ],
565+ [2 , 1 , 3 ]], names = list ('ABC' ))
566+ expected = pd .DataFrame ([
567+ [5 , 6 ],
568+ [3 , 4 ],
569+ [1 , 2 ]], index = expected_mi )
570+ result = df .sort_index (level = level )
571+ assert_frame_equal (result , expected )
559572
560- # MI sort, but no level: sort_level has no effect
561- mi = MultiIndex .from_tuples ([[1 , 1 , 3 ], [1 , 1 , 1 ]], names = list ('ABC' ))
562- df = DataFrame ([[1 , 2 ], [3 , 4 ]], mi )
563- result = df .sort_index (sort_remaining = False )
564- expected = df .sort_index ()
573+ # sort_remaining=False
574+ expected_mi = MultiIndex .from_tuples ([
575+ [1 , 1 , 1 ],
576+ [2 , 1 , 3 ],
577+ [2 , 1 , 2 ]], names = list ('ABC' ))
578+ expected = pd .DataFrame ([
579+ [5 , 6 ],
580+ [1 , 2 ],
581+ [3 , 4 ]], index = expected_mi )
582+ result = df .sort_index (level = level , sort_remaining = False )
565583 assert_frame_equal (result , expected )
566584
567585 def test_sort_index_intervalindex (self ):
0 commit comments