pandas.Index.get_indexer_non_unique#

Индекс.get_indexer_non_unique(цель)[источник]#

Вычислить индексатор и маску для нового индекса с учетом текущего индекса.

Индексатор должен затем использоваться как вход для ndarray.take для выравнивания текущих данных по новому индексу.

Параметры:
цельIndex
Возвращает:
индексаторnp.ndarray[np.intp]

Целые числа от 0 до n - 1, указывающие, что индекс в этих позициях соответствует целевым значениям. Пропущенные значения в цели помечаются как -1.

missingnp.ndarray[np.intp]

Индексатор в цели значений, которые не найдены. Они соответствуют -1 в массиве индексатора.

Примеры

>>> index = pd.Index(['c', 'b', 'a', 'b', 'b'])
>>> index.get_indexer_non_unique(['b', 'b'])
(array([1, 3, 4, 1, 3, 4]), array([], dtype=int64))

В примере ниже нет совпадающих значений.

>>> index = pd.Index(['c', 'b', 'a', 'b', 'b'])
>>> index.get_indexer_non_unique(['q', 'r', 't'])
(array([-1, -1, -1]), array([0, 1, 2]))

По этой причине возвращаемый indexer содержит только целые числа, равные -1. Это демонстрирует, что нет соответствия между индексом и target значения в этих позициях. Маска [0, 1, 2] в возвращаемом значении показывает, что первый, второй и третий элементы отсутствуют.

Обратите внимание, что возвращаемое значение — это кортеж, содержащий два элемента. В примере ниже первый элемент — это массив местоположений в index. Второй элемент — это маска, показывающая, что первый и третий элементы отсутствуют.

>>> index = pd.Index(['c', 'b', 'a', 'b', 'b'])
>>> index.get_indexer_non_unique(['f', 'b', 's'])
(array([-1,  1,  3,  4, -1]), array([0, 2]))