pandas.Index.get_indexer#
- final Index.get_indexer(target, method=None, limit=None, tolerance=None)[source]#
Compute indexer and mask for new index given the current index.
The indexer should be then used as an input to ndarray.take to align the current data to the new index.
- Parameters:
- targetIndex
An iterable containing the values to be used for computing indexer.
- method{None, ‘pad’/’ffill’, ‘backfill’/’bfill’, ‘nearest’}, optional
default: exact matches only.
pad / ffill: find the PREVIOUS index value if no exact match.
backfill / bfill: use NEXT index value if no exact match
nearest: use the NEAREST index value if no exact match. Tied distances are broken by preferring the larger index value.
- limitint, optional
Maximum number of consecutive labels in
target
to match for inexact matches.- toleranceoptional
Maximum distance between original and new labels for inexact matches. The values of the index at the matching locations must satisfy the equation
abs(index[indexer] - target) <= tolerance
.Tolerance may be a scalar value, which applies the same tolerance to all values, or list-like, which applies variable tolerance per element. List-like includes list, tuple, array, Series, and must be the same size as the index and its dtype must exactly match the index’s type.
- Returns:
- np.ndarray[np.intp]
Integers from 0 to n - 1 indicating that the index at these positions matches the corresponding target values. Missing values in the target are marked by -1.
See also
Index.get_indexer_for
Returns an indexer even when non-unique.
Index.get_non_unique
Returns indexer and masks for new index given the current index.
Notes
Returns -1 for unmatched values, for further explanation see the example below.
Examples
>>> index = pd.Index(["c", "a", "b"]) >>> index.get_indexer(["a", "b", "x"]) array([ 1, 2, -1])
Notice that the return value is an array of locations in
index
andx
is marked by -1, as it is not inindex
.