Срезы (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.