Skip to content

Commit 13a4de9

Browse files
author
tp
committed
Add examples for MultiIndex.get_locs + cleanups
1 parent 45a795e commit 13a4de9

File tree

1 file changed

+31
-10
lines changed

1 file changed

+31
-10
lines changed

pandas/core/indexes/multi.py

+31-10
Original file line numberDiff line numberDiff line change
@@ -1982,18 +1982,23 @@ def _partial_tup_index(self, tup, side='left'):
19821982

19831983
def get_loc(self, key, method=None):
19841984
"""
1985-
Get integer location, slice or boolean mask for requested label or
1986-
tuple. If the key is past the lexsort depth, the return may be a
1987-
boolean mask array, otherwise it is always a slice or int.
1985+
Get location for a label or a tuple of labels as an integer, slice or
1986+
boolean mask.
1987+
1988+
Note that the key cannot be a slice, list of same-level labels,
1989+
a boolean mask, or a sequence of such. If you want that, use
1990+
:meth:`get_locs` instead.
19881991
19891992
Parameters
19901993
----------
1991-
key : label or tuple
1994+
key : label or tuple of labels
19921995
method : None
19931996
19941997
Returns
19951998
-------
19961999
loc : int, slice object or boolean mask
2000+
If the key is past the lexsort depth, the return may be a
2001+
boolean mask array, otherwise it is always a slice or int.
19972002
19982003
Examples
19992004
---------
@@ -2117,8 +2122,7 @@ def get_loc_level(self, key, level=0, drop_level=True):
21172122
21182123
See Also
21192124
---------
2120-
MultiIndex.get_loc : Get integer location, slice or boolean mask for
2121-
requested label or tuple.
2125+
MultiIndex.get_loc : Get location for a label or a tuple of labels.
21222126
"""
21232127

21242128
def maybe_droplevels(indexer, levels, drop_level):
@@ -2330,17 +2334,34 @@ def convert_indexer(start, stop, step, indexer=indexer, labels=labels):
23302334

23312335
def get_locs(self, tup):
23322336
"""
2333-
Given a tuple of slices/lists/labels/boolean indexer to a level-wise
2334-
spec produce an indexer to extract those locations
2337+
Get location for a given label/slice/list/mask or a sequence of such as
2338+
a integer, slice or boolean mask.
23352339
23362340
Parameters
23372341
----------
2338-
key : tuple of (slices/list/labels)
2342+
key : label/slice/list/mask or a sequence of such.
23392343
23402344
Returns
23412345
-------
2342-
locs : integer list of locations or boolean indexer suitable
2346+
locs : integer, slice or boolean mask suitable
23432347
for passing to iloc
2348+
2349+
Examples
2350+
---------
2351+
>>> mi = pd.MultiIndex.from_arrays([list('abb'), list('def')])
2352+
2353+
>>> mi.get_locs('b')
2354+
slice(1, 3, None)
2355+
2356+
>>> mi.get_locs([slice(None), ['e', 'f']])
2357+
array([1, 2], dtype=int64)
2358+
2359+
>>> mi.get_locs([[True, False, True], slice('e', 'f')])
2360+
array([2], dtype=int64)
2361+
2362+
See also
2363+
--------
2364+
get_loc : Get location for a label or a tuple of labels.
23442365
"""
23452366

23462367
# must be lexsorted to at least as many levels

0 commit comments

Comments
 (0)