Метод slice_indexer
Метод slice_indexer применяется к объекту Index
и возвращает объект слайсера (slice), который можно использовать
для извлечения подмножества элементов по меткам.
Метод принимает начальную и конечную метки, а также параметры
включения границ, и возвращает слайс, который может быть применён
к данным или к самому индексу.
Синтаксис
index.slice_indexer(start=None, end=None, step=None, kind=None)
Параметры
Параметр start - начальная метка диапазона (включительно
по умолчанию). Если не указан, начало берётся от первого элемента.
Параметр end - конечная метка диапазона (включительно
по умолчанию). Если не указан, конец берётся до последнего элемента.
Параметр step - шаг слайса. По умолчанию равен 1.
Параметр kind - указывает тип используемого алгоритма.
Может принимать значения 'loc' или 'getitem'.
По умолчанию None.
Пример
Давайте создадим индекс с числами и получим слайс
для диапазона меток от 2 до 4:
import pandas as pd
idx = pd.Index([1, 2, 3, 4, 5])
sl = idx.slice_indexer(2, 4)
print(sl)
Результат выполнения кода:
slice(1, 4, None)
Пример
Применим полученный слайс для извлечения части индекса:
import pandas as pd
idx = pd.Index(['a', 'b', 'c', 'd', 'e'])
sl = idx.slice_indexer('b', 'd')
res = idx[sl]
print(res)
Результат выполнения кода:
Index(['b', 'c', 'd'], dtype='object')
Пример
Используем параметр step для создания слайса с шагом:
import pandas as pd
idx = pd.Index([10, 20, 30, 40, 50, 60])
sl = idx.slice_indexer(20, 60, step=2)
res = idx[sl]
print(res)
Результат выполнения кода:
Index([20, 40, 60], dtype='int64')
Пример
Если метки не существуют в индексе, метод найдёт ближайшие подходящие позиции:
import pandas as pd
idx = pd.Index([1, 3, 5, 7, 9])
sl = idx.slice_indexer(2, 8)
res = idx[sl]
print(res)
Результат выполнения кода:
Index([3, 5, 7], dtype='int64')
Пример
Применим слайс к данным DataFrame через метод loc:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
}, index=['row1', 'row2', 'row3', 'row4', 'row5'])
sl = df.index.slice_indexer('row2', 'row4')
res = df.loc[sl]
print(res)
Результат выполнения кода:
a b
row2 2 20
row3 3 30
row4 4 40
Смотрите также
-
метод
get_loc,
который возвращает позицию для переданной метки -
метод
get_indexer,
который возвращает массив позиций для списка меток -
метод
isin,
который проверяет вхождение меток в указанное множество -
метод
drop,
который удаляет указанные метки из индекса