@@ -428,7 +428,7 @@ def test_xs_multiindex(self):
428
428
expected .columns = expected .columns .droplevel ('lvl1' )
429
429
tm .assert_frame_equal (result , expected )
430
430
431
- def test_set_level_checkall (self ):
431
+ def test_set_level_with_level_as_default (self ):
432
432
433
433
idx = MultiIndex .from_tuples ([(1 , u'one' ), (1 , u'two' ),
434
434
(2 , u'one' ), (2 , u'two' )],
@@ -439,32 +439,64 @@ def test_set_level_checkall(self):
439
439
names = [u'foo' , u'bar' ])
440
440
tm .assert_index_equal (result , expected )
441
441
442
+ def test_set_level_with_level_as_int (self ):
443
+
444
+ idx = MultiIndex .from_tuples ([(1 , u'one' ), (1 , u'two' ),
445
+ (2 , u'one' ), (2 , u'two' )],
446
+ names = ['foo' , 'bar' ])
442
447
result = idx .set_levels (['a' , 'b' ], level = 0 )
443
448
expected = MultiIndex (levels = [[u'a' , u'b' ], [u'one' , u'two' ]],
444
449
labels = [[0 , 0 , 1 , 1 ], [0 , 1 , 0 , 1 ]],
445
450
names = [u'foo' , u'bar' ])
446
451
tm .assert_index_equal (result , expected )
447
452
453
+ def test_set_level_with_level_as_string (self ):
454
+
455
+ idx = MultiIndex .from_tuples ([(1 , u'one' ), (1 , u'two' ),
456
+ (2 , u'one' ), (2 , u'two' )],
457
+ names = ['foo' , 'bar' ])
448
458
result = idx .set_levels (['a' , 'b' ], level = 'bar' )
449
459
expected = MultiIndex (levels = [[1 , 2 ], [u'a' , u'b' ]],
450
460
labels = [[0 , 0 , 1 , 1 ], [0 , 1 , 0 , 1 ]],
451
461
names = [u'foo' , u'bar' ])
452
462
tm .assert_index_equal (result , expected )
453
463
464
+ def test_set_level_with_level_as_list (self ):
465
+
466
+ idx = MultiIndex .from_tuples ([(1 , u'one' ), (1 , u'two' ),
467
+ (2 , u'one' ), (2 , u'two' )],
468
+ names = ['foo' , 'bar' ])
454
469
result = idx .set_levels ([['a' , 'b' ], [1 , 2 ]], level = [0 , 1 ])
455
470
expected = MultiIndex (levels = [[u'a' , u'b' ], [1 , 2 ]],
456
471
labels = [[0 , 0 , 1 , 1 ], [0 , 1 , 0 , 1 ]],
457
472
names = [u'foo' , u'bar' ])
458
473
tm .assert_index_equal (result , expected )
459
474
475
+ def test_set_levels_with_empty_list_treated_as_scalar (self ):
476
+
477
+ idx = MultiIndex (levels = [['a' , 'b' ], [1 , 2 ]], labels = [[], []])
478
+ result = idx .set_levels ([], level = 0 )
479
+ expected = MultiIndex (levels = [[], [1 , 2 ]], labels = [[], []])
480
+ tm .assert_index_equal (result , expected )
481
+
482
+ # def test_set_levels_with_empty_list_treated_as_list_like(self):
483
+ # # i dont' think this should pass
484
+ # idx = MultiIndex(levels=[['a', 'b'], [1, 2]], labels=[[], []])
485
+ # result = idx.set_levels([], level=[0,1])
486
+ # expected = MultiIndex(levels=[[], []], labels=[[], []])
487
+ # tm.assert_index_equal(result, expected)
488
+
489
+ def test_set_level_assigning_empty_level (self ):
490
+
491
+ # GH16147
460
492
# setting empty levels are allowed
461
493
idx = MultiIndex (levels = [['L1' ], ['L2' ]], labels = [[], []],
462
494
names = ['a' , 'b' ])
463
495
result = idx .set_levels ([], level = 'a' )
464
496
expected = MultiIndex (levels = [[], ['L2' ]], labels = [[], []],
465
497
names = ['a' , 'b' ])
466
498
tm .assert_index_equal (result , expected )
467
-
499
+
468
500
idx = MultiIndex (levels = [['L1' ], ['L2' ]], labels = [[], []],
469
501
names = ['a' , 'b' ])
470
502
result = idx .set_levels ([[], []], level = ['a' , 'b' ])
0 commit comments