@@ -2411,6 +2411,59 @@ def test_is_monotonic(self):
2411
2411
2412
2412
self .assertFalse (i .is_monotonic )
2413
2413
2414
+ def test_reconstruct_sort (self ):
2415
+
2416
+ # starts off lexsorted & monotonic
2417
+ mi = MultiIndex .from_arrays ([
2418
+ ['A' , 'A' , 'B' , 'B' , 'B' ], [1 , 2 , 1 , 2 , 3 ]
2419
+ ])
2420
+ assert mi .is_lexsorted ()
2421
+ assert mi .is_monotonic
2422
+
2423
+ recons = mi ._reconstruct (sort = True )
2424
+ assert recons .is_lexsorted ()
2425
+ assert recons .is_monotonic
2426
+ assert mi is recons
2427
+
2428
+ assert mi .equals (recons )
2429
+ assert Index (mi .values ).equals (Index (recons .values ))
2430
+
2431
+ recons = mi ._reconstruct (sort = False )
2432
+ assert recons .is_lexsorted ()
2433
+ assert recons .is_monotonic
2434
+ assert mi is recons
2435
+
2436
+ assert mi .equals (recons )
2437
+ assert Index (mi .values ).equals (Index (recons .values ))
2438
+
2439
+ # cannot convert to lexsorted
2440
+ mi = pd .MultiIndex .from_tuples ([('z' , 'a' ), ('x' , 'a' ), ('y' , 'b' ),
2441
+ ('x' , 'b' ), ('y' , 'a' ), ('z' , 'b' )],
2442
+ names = ['one' , 'two' ])
2443
+ assert not mi .is_lexsorted ()
2444
+ assert not mi .is_monotonic
2445
+
2446
+ recons = mi ._reconstruct (sort = True )
2447
+ assert not recons .is_lexsorted ()
2448
+ assert not recons .is_monotonic
2449
+
2450
+ assert mi .equals (recons )
2451
+ assert Index (mi .values ).equals (Index (recons .values ))
2452
+
2453
+ # cannot convert to lexsorted
2454
+ mi = MultiIndex (levels = [['b' , 'd' , 'a' ], [1 , 2 , 3 ]],
2455
+ labels = [[0 , 1 , 0 , 2 ], [2 , 0 , 0 , 1 ]],
2456
+ names = ['col1' , 'col2' ])
2457
+ assert not mi .is_lexsorted ()
2458
+ assert not mi .is_monotonic
2459
+
2460
+ recons = mi ._reconstruct (sort = True )
2461
+ assert not recons .is_lexsorted ()
2462
+ assert not recons .is_monotonic
2463
+
2464
+ assert mi .equals (recons )
2465
+ assert Index (mi .values ).equals (Index (recons .values ))
2466
+
2414
2467
def test_isin (self ):
2415
2468
values = [('foo' , 2 ), ('bar' , 3 ), ('quux' , 4 )]
2416
2469
0 commit comments