@@ -719,8 +719,15 @@ def _set_levels(
719
719
720
720
def set_levels (self , levels , level = None , inplace = False , verify_integrity = True ):
721
721
"""
722
- Set new levels on MultiIndex. Defaults to returning
723
- new index.
722
+ Sets/changes levels on MultiIndex by passing a new value for each
723
+ index in the level. It is assumed that a new value is provided for
724
+ each code describing values in the level. Defaults to returning new
725
+ index.
726
+
727
+ If the number of values passed is more than number of index values in
728
+ the level, ``set_levels`` will still pass the values to the level. The
729
+ passed values are stored in the MultiIndex FrozenList even though the
730
+ index values may be truncated in the MultiIndex output from set_levels.
724
731
725
732
Parameters
726
733
----------
@@ -740,32 +747,51 @@ def set_levels(self, levels, level=None, inplace=False, verify_integrity=True):
740
747
Examples
741
748
--------
742
749
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
743
- (2, 'one'), (2, 'two')],
750
+ (2, 'one'), (2, 'two'),
751
+ (3, 'one'), (3, 'two')],
744
752
names=['foo', 'bar'])
745
- >>> idx.set_levels([['a', 'b'], [1, 2]])
753
+ >>> idx.set_levels([['a', 'b', 'c' ], [1, 2]])
746
754
MultiIndex([('a', 1),
747
755
('a', 2),
748
756
('b', 1),
749
- ('b', 2)],
757
+ ('b', 2),
758
+ ('c', 1),
759
+ ('c', 2)],
750
760
names=['foo', 'bar'])
751
- >>> idx.set_levels(['a', 'b'], level=0)
761
+ >>> idx.set_levels(['a', 'b', 'c' ], level=0)
752
762
MultiIndex([('a', 'one'),
753
763
('a', 'two'),
754
764
('b', 'one'),
755
- ('b', 'two')],
765
+ ('b', 'two'),
766
+ ('c', 'one'),
767
+ ('c', 'two')],
756
768
names=['foo', 'bar'])
757
769
>>> idx.set_levels(['a', 'b'], level='bar')
758
770
MultiIndex([(1, 'a'),
759
771
(1, 'b'),
760
772
(2, 'a'),
761
- (2, 'b')],
773
+ (2, 'b'),
774
+ (3, 'a'),
775
+ (3, 'b')],
776
+ names=['foo', 'bar'])
777
+ >>> idx.set_levels([['a', 'b', 'c'], [1, 2]], level=[0, 1])
778
+ MultiIndex([('a', 1),
779
+ ('a', 2),
780
+ ('b', 1),
781
+ ('b', 2),
782
+ ('c', 1),
783
+ ('c', 2)],
762
784
names=['foo', 'bar'])
763
- >>> idx.set_levels([['a', 'b'], [1, 2]], level=[0, 1])
785
+ >>> idx.set_levels([['a', 'b', 'c'], [1, 2]], level=[0, 1]).levels
786
+ FrozenList([['a', 'b', 'c'], [1, 2]])
787
+ >>> idx.set_levels([['a', 'b', 'c'], [1, 2, 3, 4]], level=[0, 1])
764
788
MultiIndex([('a', 1),
765
789
('a', 2),
766
790
('b', 1),
767
791
('b', 2)],
768
792
names=['foo', 'bar'])
793
+ >>> idx.set_levels([['a', 'b', 'c'], [1, 2, 3, 4]], level=[0, 1]).levels
794
+ FrozenList([['a', 'b', 'c'], [1, 2, 3, 4]])
769
795
"""
770
796
if is_list_like (levels ) and not isinstance (levels , Index ):
771
797
levels = list (levels )
0 commit comments