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