Skip to content

Commit 25a1d91

Browse files
authored
[WIP] DOC: MultiIndex EX01 errors (pandas-dev#37993)
1 parent 589a89e commit 25a1d91

File tree

2 files changed

+133
-1
lines changed

2 files changed

+133
-1
lines changed

pandas/core/indexes/base.py

+27
Original file line numberDiff line numberDiff line change
@@ -1575,6 +1575,33 @@ def droplevel(self, level=0):
15751575
Returns
15761576
-------
15771577
Index or MultiIndex
1578+
1579+
Examples
1580+
--------
1581+
>>> mi = pd.MultiIndex.from_arrays(
1582+
... [[1, 2], [3, 4], [5, 6]], names=['x', 'y', 'z'])
1583+
>>> mi
1584+
MultiIndex([(1, 3, 5),
1585+
(2, 4, 6)],
1586+
names=['x', 'y', 'z'])
1587+
1588+
>>> mi.droplevel()
1589+
MultiIndex([(3, 5),
1590+
(4, 6)],
1591+
names=['y', 'z'])
1592+
1593+
>>> mi.droplevel(2)
1594+
MultiIndex([(1, 3),
1595+
(2, 4)],
1596+
names=['x', 'y'])
1597+
1598+
>>> mi.droplevel('z')
1599+
MultiIndex([(1, 3),
1600+
(2, 4)],
1601+
names=['x', 'y'])
1602+
1603+
>>> mi.droplevel(['x', 'y'])
1604+
Int64Index([5, 6], dtype='int64', name='z')
15781605
"""
15791606
if not isinstance(level, (tuple, list)):
15801607
level = [level]

pandas/core/indexes/multi.py

+106-1
Original file line numberDiff line numberDiff line change
@@ -893,13 +893,31 @@ def set_levels(self, levels, level=None, inplace=None, verify_integrity=True):
893893
def nlevels(self) -> int:
894894
"""
895895
Integer number of levels in this MultiIndex.
896+
897+
Examples
898+
--------
899+
>>> mi = pd.MultiIndex.from_arrays([['a'], ['b'], ['c']])
900+
>>> mi
901+
MultiIndex([('a', 'b', 'c')],
902+
)
903+
>>> mi.nlevels
904+
3
896905
"""
897906
return len(self._levels)
898907

899908
@property
900909
def levshape(self):
901910
"""
902911
A tuple with the length of each level.
912+
913+
Examples
914+
--------
915+
>>> mi = pd.MultiIndex.from_arrays([['a'], ['b'], ['c']])
916+
>>> mi
917+
MultiIndex([('a', 'b', 'c')],
918+
)
919+
>>> mi.levshape
920+
(1, 1, 1)
903921
"""
904922
return tuple(len(x) for x in self.levels)
905923

@@ -1436,7 +1454,22 @@ def _set_names(self, names, level=None, validate=True):
14361454
self._reset_cache()
14371455

14381456
names = property(
1439-
fset=_set_names, fget=_get_names, doc="""\nNames of levels in MultiIndex.\n"""
1457+
fset=_set_names,
1458+
fget=_get_names,
1459+
doc="""
1460+
Names of levels in MultiIndex.
1461+
1462+
Examples
1463+
--------
1464+
>>> mi = pd.MultiIndex.from_arrays(
1465+
... [[1, 2], [3, 4], [5, 6]], names=['x', 'y', 'z'])
1466+
>>> mi
1467+
MultiIndex([(1, 3, 5),
1468+
(2, 4, 6)],
1469+
names=['x', 'y', 'z'])
1470+
>>> mi.names
1471+
FrozenList(['x', 'y', 'z'])
1472+
""",
14401473
)
14411474

14421475
# --------------------------------------------------------------------
@@ -1680,6 +1713,32 @@ def to_frame(self, index=True, name=None):
16801713
--------
16811714
DataFrame : Two-dimensional, size-mutable, potentially heterogeneous
16821715
tabular data.
1716+
1717+
Examples
1718+
--------
1719+
>>> mi = pd.MultiIndex.from_arrays([['a', 'b'], ['c', 'd']])
1720+
>>> mi
1721+
MultiIndex([('a', 'c'),
1722+
('b', 'd')],
1723+
)
1724+
1725+
>>> df = mi.to_frame()
1726+
>>> df
1727+
0 1
1728+
a c a c
1729+
b d b d
1730+
1731+
>>> df = mi.to_frame(index=False)
1732+
>>> df
1733+
0 1
1734+
0 a c
1735+
1 b d
1736+
1737+
>>> df = mi.to_frame(name=['x', 'y'])
1738+
>>> df
1739+
x y
1740+
a c a c
1741+
b d b d
16831742
"""
16841743
from pandas import DataFrame
16851744

@@ -2217,6 +2276,24 @@ def reorder_levels(self, order):
22172276
Returns
22182277
-------
22192278
MultiIndex
2279+
2280+
Examples
2281+
--------
2282+
>>> mi = pd.MultiIndex.from_arrays([[1, 2], [3, 4]], names=['x', 'y'])
2283+
>>> mi
2284+
MultiIndex([(1, 3),
2285+
(2, 4)],
2286+
names=['x', 'y'])
2287+
2288+
>>> mi.reorder_levels(order=[1, 0])
2289+
MultiIndex([(3, 1),
2290+
(4, 2)],
2291+
names=['y', 'x'])
2292+
2293+
>>> mi.reorder_levels(order=['y', 'x'])
2294+
MultiIndex([(3, 1),
2295+
(4, 2)],
2296+
names=['y', 'x'])
22202297
"""
22212298
order = [self._get_level_number(i) for i in order]
22222299
if len(order) != self.nlevels:
@@ -2275,6 +2352,34 @@ def sortlevel(self, level=0, ascending=True, sort_remaining=True):
22752352
Resulting index.
22762353
indexer : np.ndarray
22772354
Indices of output values in original index.
2355+
2356+
Examples
2357+
--------
2358+
>>> mi = pd.MultiIndex.from_arrays([[0, 0], [2, 1]])
2359+
>>> mi
2360+
MultiIndex([(0, 2),
2361+
(0, 1)],
2362+
)
2363+
2364+
>>> mi.sortlevel()
2365+
(MultiIndex([(0, 1),
2366+
(0, 2)],
2367+
), array([1, 0]))
2368+
2369+
>>> mi.sortlevel(sort_remaining=False)
2370+
(MultiIndex([(0, 2),
2371+
(0, 1)],
2372+
), array([0, 1]))
2373+
2374+
>>> mi.sortlevel(1)
2375+
(MultiIndex([(0, 1),
2376+
(0, 2)],
2377+
), array([1, 0]))
2378+
2379+
>>> mi.sortlevel(1, ascending=False)
2380+
(MultiIndex([(0, 2),
2381+
(0, 1)],
2382+
), array([0, 1]))
22782383
"""
22792384
if isinstance(level, (str, int)):
22802385
level = [level]

0 commit comments

Comments
 (0)