Skip to content

Commit b9de33e

Browse files
hweecatdatapythonista
authored andcommitted
DOC: Edit MultiIndex.set_levels() docstring to clarify that set_levels() interprets passed values as new components of the .levels attribute (#28294) (#29143)
1 parent 43e251d commit b9de33e

File tree

1 file changed

+22
-7
lines changed

1 file changed

+22
-7
lines changed

pandas/core/indexes/multi.py

+22-7
Original file line numberDiff line numberDiff line change
@@ -745,32 +745,47 @@ def set_levels(self, levels, level=None, inplace=False, verify_integrity=True):
745745
Examples
746746
--------
747747
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
748-
(2, 'one'), (2, 'two')],
748+
(2, 'one'), (2, 'two'),
749+
(3, 'one'), (3, 'two')],
749750
names=['foo', 'bar'])
750-
>>> idx.set_levels([['a', 'b'], [1, 2]])
751+
>>> idx.set_levels([['a', 'b', 'c'], [1, 2]])
751752
MultiIndex([('a', 1),
752753
('a', 2),
753754
('b', 1),
754-
('b', 2)],
755+
('b', 2),
756+
('c', 1),
757+
('c', 2)],
755758
names=['foo', 'bar'])
756-
>>> idx.set_levels(['a', 'b'], level=0)
759+
>>> idx.set_levels(['a', 'b', 'c'], level=0)
757760
MultiIndex([('a', 'one'),
758761
('a', 'two'),
759762
('b', 'one'),
760-
('b', 'two')],
763+
('b', 'two'),
764+
('c', 'one'),
765+
('c', 'two')],
761766
names=['foo', 'bar'])
762767
>>> idx.set_levels(['a', 'b'], level='bar')
763768
MultiIndex([(1, 'a'),
764769
(1, 'b'),
765770
(2, 'a'),
766-
(2, 'b')],
771+
(2, 'b'),
772+
(3, 'a'),
773+
(3, 'b')],
767774
names=['foo', 'bar'])
768-
>>> idx.set_levels([['a', 'b'], [1, 2]], level=[0, 1])
775+
776+
If any of the levels passed to ``set_levels()`` exceeds the
777+
existing length, all of the values from that argument will
778+
be stored in the MultiIndex levels, though the values will
779+
be truncated in the MultiIndex output.
780+
781+
>>> idx.set_levels([['a', 'b', 'c'], [1, 2, 3, 4]], level=[0, 1])
769782
MultiIndex([('a', 1),
770783
('a', 2),
771784
('b', 1),
772785
('b', 2)],
773786
names=['foo', 'bar'])
787+
>>> idx.set_levels([['a', 'b', 'c'], [1, 2, 3, 4]], level=[0, 1]).levels
788+
FrozenList([['a', 'b', 'c'], [1, 2, 3, 4]])
774789
"""
775790
if is_list_like(levels) and not isinstance(levels, Index):
776791
levels = list(levels)

0 commit comments

Comments
 (0)