DataFrame.query()

Метод query() фильтрует строки DataFrame по логическому выражению, заданному строкой. Это компактная альтернатива булевой индексации df[df.col > 5].

Сигнатура

DataFrame.query(expr, inplace=False, **kwargs)

Параметры

  • expr — строка с условием. Поддерживает and, or, not, сравнения, in.

  • inplace — изменить DataFrame на месте.

  • Внешние переменные подставляются через префикс @: query("x > @threshold").

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

Отфильтрованный DataFrame (или None при inplace=True).

Примеры

Пример 1. Базовая фильтрация

import pandas as pd

df = pd.DataFrame({
    "robot": ["P1", "P2", "P3", "P4"],
    "temp":  [22, 35, 41, 28],
})
print(df.query("temp > 30"))
  robot  temp
1    P2    35
2    P3    41

Пример 2. Несколько условий

import pandas as pd

df = pd.DataFrame({
    "robot": ["P1", "P2", "P3"],
    "temp":  [22, 35, 28],
    "ok":    [True, False, True],
})
print(df.query("temp < 30 and ok == True"))
  robot  temp    ok
0    P1    22  True
2    P3    28  True

Пример 3. Внешняя переменная через @

import pandas as pd

df = pd.DataFrame({"v": [10, 20, 30, 40]})
threshold = 25
print(df.query("v > @threshold"))
    v
2  30
3  40

Пример 4. Оператор in

import pandas as pd

df = pd.DataFrame({
    "robot": ["P1", "P2", "P3", "P4"],
    "zone":  ["A", "B", "A", "C"],
})
print(df.query("zone in ['A', 'C']"))
  robot zone
0    P1    A
2    P3    A
3    P4    C

Пример 5. Имена с пробелами через backticks

import pandas as pd

df = pd.DataFrame({"robot id": ["P1", "P2"], "v": [10, 20]})
print(df.query("`robot id` == 'P1'"))
  robot id   v
0       P1  10

См. также

Примечание

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

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