Skip to content

Commit fedf922

Browse files
topper-123jorisvandenbossche
authored andcommitted
DOC: add examples to .get_loc methods (#17563)
1 parent 4d7f3ef commit fedf922

File tree

4 files changed

+83
-5
lines changed

4 files changed

+83
-5
lines changed

pandas/core/indexes/base.py

+17-3
Original file line numberDiff line numberDiff line change
@@ -2421,7 +2421,7 @@ def _get_unique_index(self, dropna=False):
24212421
return self._shallow_copy(values)
24222422

24232423
_index_shared_docs['get_loc'] = """
2424-
Get integer location for requested label.
2424+
Get integer location, slice or boolean mask for requested label.
24252425
24262426
Parameters
24272427
----------
@@ -2441,8 +2441,22 @@ def _get_unique_index(self, dropna=False):
24412441
24422442
Returns
24432443
-------
2444-
loc : int if unique index, possibly slice or mask if not
2445-
"""
2444+
loc : int if unique index, slice if monotonic index, else mask
2445+
2446+
Examples
2447+
---------
2448+
>>> unique_index = pd.Index(list('abc'))
2449+
>>> unique_index.get_loc('b')
2450+
1
2451+
2452+
>>> monotonic_index = pd.Index(list('abbc'))
2453+
>>> monotonic_index.get_loc('b')
2454+
slice(1, 3, None)
2455+
2456+
>>> non_monotonic_index = pd.Index(list('abcb'))
2457+
>>> non_monotonic_index.get_loc('b')
2458+
array([False, True, False, True], dtype=bool)
2459+
"""
24462460

24472461
@Appender(_index_shared_docs['get_loc'])
24482462
def get_loc(self, key, method=None, tolerance=None):

pandas/core/indexes/category.py

+16-2
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ def _to_safe_for_reshape(self):
354354

355355
def get_loc(self, key, method=None):
356356
"""
357-
Get integer location for requested label
357+
Get integer location, slice or boolean mask for requested label.
358358
359359
Parameters
360360
----------
@@ -364,7 +364,21 @@ def get_loc(self, key, method=None):
364364
365365
Returns
366366
-------
367-
loc : int if unique index, possibly slice or mask if not
367+
loc : int if unique index, slice if monotonic index, else mask
368+
369+
Examples
370+
---------
371+
>>> unique_index = pd.CategoricalIndex(list('abc'))
372+
>>> unique_index.get_loc('b')
373+
1
374+
375+
>>> monotonic_index = pd.CategoricalIndex(list('abbc'))
376+
>>> monotonic_index.get_loc('b')
377+
slice(1, 3, None)
378+
379+
>>> non_monotonic_index = p.dCategoricalIndex(list('abcb'))
380+
>>> non_monotonic_index.get_loc('b')
381+
array([False, True, False, True], dtype=bool)
368382
"""
369383
codes = self.categories.get_loc(key)
370384
if (codes == -1):

pandas/core/indexes/interval.py

+35
Original file line numberDiff line numberDiff line change
@@ -689,6 +689,41 @@ def _find_non_overlapping_monotonic_bounds(self, key):
689689
return start, stop
690690

691691
def get_loc(self, key, method=None):
692+
"""Get integer location, slice or boolean mask for requested label.
693+
694+
Parameters
695+
----------
696+
key : label
697+
method : {None}, optional
698+
* default: matches where the label is within an interval only.
699+
700+
Returns
701+
-------
702+
loc : int if unique index, slice if monotonic index, else mask
703+
704+
Examples
705+
---------
706+
>>> i1, i2 = pd.Interval(0, 1), pd.Interval(1, 2)
707+
>>> index = pd.IntervalIndex.from_intervals([i1, i2])
708+
>>> index.get_loc(1)
709+
0
710+
711+
You can also supply an interval or an location for a point inside an
712+
interval.
713+
714+
>>> index.get_loc(pd.Interval(0, 2))
715+
array([0, 1], dtype=int64)
716+
>>> index.get_loc(1.5)
717+
1
718+
719+
If a label is in several intervals, you get the locations of all the
720+
relevant intervals.
721+
722+
>>> i3 = pd.Interval(0, 2)
723+
>>> overlapping_index = pd.IntervalIndex.from_intervals([i2, i3])
724+
>>> overlapping_index.get_loc(1.5)
725+
array([0, 1], dtype=int64)
726+
"""
692727
self._check_method(method)
693728

694729
original_key = key

pandas/core/indexes/multi.py

+15
Original file line numberDiff line numberDiff line change
@@ -1967,6 +1967,21 @@ def get_loc(self, key, method=None):
19671967
Returns
19681968
-------
19691969
loc : int, slice object or boolean mask
1970+
1971+
Examples
1972+
---------
1973+
>>> mi = pd.MultiIndex.from_arrays([list('abb'), list('def')])
1974+
>>> mi.get_loc('b')
1975+
slice(1, 3, None)
1976+
>>> mi.get_loc(('b', 'e'))
1977+
1
1978+
1979+
See also
1980+
--------
1981+
Index.get_loc : get_loc method for (single-level) index.
1982+
get_locs : Given a tuple of slices/lists/labels/boolean indexer to a
1983+
level-wise spec, produce an indexer to extract those
1984+
locations.
19701985
"""
19711986
if method is not None:
19721987
raise NotImplementedError('only the default get_loc method is '

0 commit comments

Comments
 (0)