Метод query
Метод query применяется к DataFrame
и возвращает отфильтрованные строки на основе условия,
переданного в виде строки. Это позволяет использовать
более читаемый синтаксис для фильтрации данных,
особенно при работе со сложными логическими выражениями.
Синтаксис
df.query(expression, inplace=False, **kwargs)
Основные параметры метода query:
-
expression- строковое выражение с условием фильтрации, в котором можно использовать имена столбцов как переменные -
inplace- еслиTrue, изменяет исходный DataFrame, по умолчаниюFalse -
**kwargs- дополнительные параметры, например,engineдля выбора движка выполнения ('python'или'numexpr')
Пример
Давайте отфильтруем строки, где значения в столбце a
больше 2:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.query('a > 2')
print(res)
Результат выполнения кода:
a b
2 3 30
3 4 40
4 5 50
Пример
Фильтрация с использованием нескольких условий:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.query('a > 2 and b < 50')
print(res)
Результат выполнения кода:
a b
2 3 30
3 4 40
Пример
Использование переменных в выражении с префиксом @:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
threshold = 3
res = df.query('a > @threshold')
print(res)
Результат выполнения кода:
a b
3 4 40
4 5 50
Пример
Использование метода query со строковыми значениями:
import pandas as pd
df = pd.DataFrame({
'a': ['abc', 'def', 'abc', 'ghi'],
'b': [10, 20, 30, 40]
})
res = df.query('a == "abc"')
print(res)
Результат выполнения кода:
a b
0 abc 10
2 abc 30
Пример
Фильтрация с использованием оператора in:
import pandas as pd
df = pd.DataFrame({
'a': [1, 2, 3, 4, 5],
'b': [10, 20, 30, 40, 50]
})
res = df.query('a in [2, 4]')
print(res)
Результат выполнения кода:
a b
1 2 20
3 4 40