Метод get_indexer
Метод get_indexer применяется к Index
и возвращает массив целочисленных индексов для каждого элемента
из переданного массива, показывая его позицию в текущем индексе.
Если элемент не найден, в результате будет -1.
Этот метод полезен для поиска позиций элементов одного индекса в другом, например, при сопоставлении данных из разных источников или для переиндексации.
Синтаксис
index.get_indexer(target)
Пример
Давайте получим позиционные индексы для нескольких значений из заданного индекса:
import pandas as pd
idx = pd.Index([10, 20, 30, 40, 50])
res = idx.get_indexer([20, 40, 100])
print(res)
Результат выполнения кода:
[ 1 3 -1]
Значение 20 находится на позиции 1,
40 - на позиции 3, а 100
отсутствует, поэтому для него возвращается -1.
Пример
Метод get_indexer отлично работает с другими индексами.
Найдём позиции всех элементов одного индекса в другом:
import pandas as pd
idx1 = pd.Index(['a', 'b', 'c', 'd'])
idx2 = pd.Index(['c', 'a', 'x'])
res = idx1.get_indexer(idx2)
print(res)
Результат выполнения кода:
[ 2 0 -1]
Символ 'c' находится на позиции 2,
'a' - на позиции 0, а 'x'
отсутствует в исходном индексе.
Пример
Метод get_indexer также корректно обрабатывает
повторяющиеся значения в целевом массиве:
import pandas as pd
idx = pd.Index([1, 2, 3, 4, 5])
res = idx.get_indexer([2, 2, 5, 5, 1])
print(res)
Результат выполнения кода:
[1 1 4 4 0]
Каждое вхождение элемента получает свою позицию в соответствии с текущим индексом.
Смотрите также
-
метод
get_loc,
который возвращает позицию для одного элемента -
метод
isin,
который проверяет вхождение элементов в индекс -
метод
slice_indexer,
который преобразует срез в позиционные индексы -
метод
unique,
который возвращает уникальные значения индекса