DataFrame.loc / Series.loc

loc — индексатор для доступа к данным по меткам строк и столбцов. В отличие от iloc (по позициям), loc использует значения индекса/имена столбцов. Это атрибут, доступ через квадратные скобки df.loc[row, col].

Сигнатура

DataFrame.loc[row_indexer, column_indexer]
Series.loc[indexer]

Параметры

Индексаторы:

  • метка — df.loc["s1"];

  • список меток — df.loc[["s1", "s3"]];

  • срез start:stop — обе границы включены (в отличие от iloc);

  • булева маска — df.loc[df["temp"] > 22];

  • callable — функция, принимающая df и возвращающая один из вышеперечисленных видов.

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

Скаляр, Series или DataFrame.

Примеры

Пример 1. Строка по метке

import pandas as pd

df = pd.DataFrame(
    {"temp": [22, 23, 24]},
    index=["s1", "s2", "s3"],
)
print(df.loc["s2"])
temp    23
Name: s2, dtype: int64

Пример 2. Срез включает обе границы

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(
    {"temp": [22, 23, 24], "humidity": [55, 60, 58]},
    index=["s1", "s2", "s3"],
)
print(df.loc[["s1", "s3"], "temp"])
s1    22
s3    24
Name: temp, dtype: int64

Пример 4. Булева маска

import pandas as pd

df = pd.DataFrame({"temp": [22, 28, 21, 30]})
print(df.loc[df["temp"] > 25])
   temp
1    28
3    30

Пример 5. Присваивание через loc

import pandas as pd

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

См. также

Примечание

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

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