@@ -550,18 +550,36 @@ def test_sort_index(self):
550
550
expected = frame .iloc [:, ::- 1 ]
551
551
assert_frame_equal (result , expected )
552
552
553
- def test_sort_index_multiindex (self ):
553
+ @pytest .mark .parametrize ("level" , ['A' , 0 ]) # GH 21052
554
+ def test_sort_index_multiindex (self , level ):
554
555
# GH13496
555
556
556
557
# 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 )
559
572
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 )
565
583
assert_frame_equal (result , expected )
566
584
567
585
def test_sort_index_intervalindex (self ):
0 commit comments