Skip to content

Commit d9130f2

Browse files
committed
edit set_levels docstring with additional examples
edit set_levels docstring with additional examples edit set_levels docstring with additional examples
1 parent e8256cc commit d9130f2

File tree

2 files changed

+36
-40
lines changed

2 files changed

+36
-40
lines changed

doc/source/user_guide/advanced.rst

-31
Original file line numberDiff line numberDiff line change
@@ -177,37 +177,6 @@ completely analogous way to selecting a column in a regular DataFrame:
177177
See :ref:`Cross-section with hierarchical index <advanced.xs>` for how to select
178178
on a deeper level.
179179

180-
.. _advanced.set_levels:
181-
182-
Set values in levels
183-
~~~~~~~~~~~~~~~~~~~~~
184-
185-
The method :meth:`~MultiIndex.set_levels` changes the ``levels`` attribute by
186-
passing a new value for each index in the level. It is assumed that a new value
187-
is provided for each code describing values in the level.
188-
For example:
189-
190-
.. ipython:: python
191-
192-
df.columns # original MultiIndex columns
193-
194-
df.columns.levels # original MultiIndex column levels
195-
196-
df.columns.set_levels([1, 3, 5, 7], level=0)
197-
198-
df.columns.set_levels([1, 3, 5, 7], level=0).levels
199-
200-
If you pass more values than the number of index values in the level,
201-
``set_levels`` will still pass the values to the level. The passed values
202-
are stored in the MultiIndex ``FrozenList`` even though the index values
203-
may be truncated in the MultiIndex output from ``set_levels``.
204-
205-
.. ipython:: python
206-
207-
df.columns.set_levels([1, 3, 5, 7], level=1)
208-
209-
df.columns.set_levels([1, 3, 5, 7], level=1).levels
210-
211180
.. _advanced.shown_levels:
212181

213182
Defined levels

pandas/core/indexes/multi.py

+36-9
Original file line numberDiff line numberDiff line change
@@ -719,8 +719,16 @@ def _set_levels(
719719

720720
def set_levels(self, levels, level=None, inplace=False, verify_integrity=True):
721721
"""
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.
724732
725733
Parameters
726734
----------
@@ -740,32 +748,51 @@ def set_levels(self, levels, level=None, inplace=False, verify_integrity=True):
740748
Examples
741749
--------
742750
>>> idx = pd.MultiIndex.from_tuples([(1, 'one'), (1, 'two'),
743-
(2, 'one'), (2, 'two')],
751+
(2, 'one'), (2, 'two'),
752+
(3, 'one'), (3, 'two')],
744753
names=['foo', 'bar'])
745-
>>> idx.set_levels([['a', 'b'], [1, 2]])
754+
>>> idx.set_levels([['a', 'b', 'c'], [1, 2]])
746755
MultiIndex([('a', 1),
747756
('a', 2),
748757
('b', 1),
749-
('b', 2)],
758+
('b', 2),
759+
('c', 1),
760+
('c', 2)],
750761
names=['foo', 'bar'])
751-
>>> idx.set_levels(['a', 'b'], level=0)
762+
>>> idx.set_levels(['a', 'b', 'c'], level=0)
752763
MultiIndex([('a', 'one'),
753764
('a', 'two'),
754765
('b', 'one'),
755-
('b', 'two')],
766+
('b', 'two'),
767+
('c', 'one'),
768+
('c', 'two')],
756769
names=['foo', 'bar'])
757770
>>> idx.set_levels(['a', 'b'], level='bar')
758771
MultiIndex([(1, 'a'),
759772
(1, 'b'),
760773
(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)],
762785
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])
764789
MultiIndex([('a', 1),
765790
('a', 2),
766791
('b', 1),
767792
('b', 2)],
768793
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]])
769796
"""
770797
if is_list_like(levels) and not isinstance(levels, Index):
771798
levels = list(levels)

0 commit comments

Comments
 (0)