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.