Срезы (slice) в Pandas

В Pandas срезы используются для выбора диапазонов строк и столбцов через индексаторы .iloc[] (по позициям) и .loc[] (по меткам), а также через Series.str.slice() для строковых данных.

Примечание

Главное отличие: .iloc[a:b] НЕ включает позицию b, а .loc[a:b] включает метку b.

Сигнатура

# Срез по позициям
DataFrame.iloc[start:stop:step]

# Срез по меткам
DataFrame.loc[start:stop:step]

# Срез строк в Series
Series.str.slice(start=None, stop=None, step=None)

Параметры

  • start — начальная позиция / метка.

  • stop — конечная позиция / метка.

  • step — шаг.

Возвращаемое значение

Подмножество DataFrame / Series.

Примеры

Пример 1. iloc — срез по позициям

import pandas as pd

df = pd.DataFrame({"v": [10, 20, 30, 40, 50]})
print(df.iloc[1:4])
    v
1  20
2  30
3  40

Пример 2. loc — срез по меткам (граница включена!)

import pandas as pd

df = pd.DataFrame({"v": [10, 20, 30, 40]}, index=["a", "b", "c", "d"])
print(df.loc["b":"d"])
    v
b  20
c  30
d  40

Пример 3. Срез столбцов

import pandas as pd

df = pd.DataFrame({"a": [1], "b": [2], "c": [3], "d": [4]})
print(df.loc[:, "b":"c"])
   b  c
0  2  3

Пример 4. Шаг (каждая 2-я строка)

import pandas as pd

df = pd.DataFrame({"v": range(10)})
print(df.iloc[::2])
   v
0  0
2  2
4  4
6  6
8  8

Пример 5. Срез строк в Series.str

import pandas as pd

s = pd.Series(["sensor_A_01", "sensor_B_02"])
print(s.str.slice(7, 11))
0    A_01
1    B_02
dtype: object

См. также

Примечание

Лицензия и источники

Техническое описание функции адаптировано из официальной документации Pandas (https://pandas.pydata.org/docs/), BSD-3-Clause License. Примеры и пояснения — © AlashEd Wiki.