pandas.DataFrame.query
-
DataFrame.query(self, expr, inplace=False, **kwargs)[source] -
Запрос к столбцам DataFrame с помощью булевого выражения.
Параметры: -
expr : str -
Строка запроса для вычисления. Вы можете ссылаться на переменные в окружении, добавляя перед ними символ «@», например
@a + b.Введено в версии 0.25.0.
Вы можете ссылаться на имена столбцов, содержащие пробелы, заключая их в обратные кавычки.
Например, если у вас есть столбец под названием
a aи вы хотите сложить его со столбцомb, ваш запрос должен быть`a a` + b. -
inplace : bool -
Указывает, нужно ли изменять данные на месте или возвращать изменённую копию.
- **kwargs
-
См. документацию по
eval()для получения полной информации о ключевых аргументах, принимаемыхDataFrame.query().Введено в версии 0.18.0.
Возвращаемое значение: - DataFrame
-
DataFrame, полученный в результате выполнения выражения запроса.
См. также
-
eval - Вычисление строки, описывающей операции над столбцами DataFrame.
-
DataFrame.eval - Вычисление строки, описывающей операции над столбцами DataFrame.
Примечания
Результат вычисления этого выражения сначала передается в
DataFrame.loc. Если это не удается из-за многомерного ключа (например, DataFrame), то результат будет передан вDataFrame.__getitem__().Этот метод использует функцию верхнего уровня
eval()для вычисления переданного запроса.Метод
query()по умолчанию использует немного изменённый синтаксис Python. Например, операторы&и|(побитовые) имеют приоритет своих логических аналогов,andиor. Это является синтаксически правильным Python, однако семантика отличается.Вы можете изменить семантику выражения, передав ключевой аргумент
parser='python'. Это принудительно навязывает ту же семантику, что и вычисление в пространстве Python. Аналогично, вы можете передатьengine='python'для вычисления выражения с использованием самого Python в качестве бэкэнда. Это не рекомендуется, так как это неэффективно по сравнению с использованиемnumexprв качестве движка.Атрибуты
DataFrame.indexиDataFrame.columnsэкземпляраDataFrameпо умолчанию помещаются в пространство имён запроса, что позволяет рассматривать как индекс, так и столбцы фрейма как столбец в фрейме. Идентификаторindexиспользуется для индекса фрейма; вы также можете использовать имя индекса для его идентификации в запросе. Обратите внимание, что ключевые слова Python не могут использоваться в качестве идентификаторов.Для получения дополнительной информации и примеров см. документацию
queryв индексировании.Примеры
>>> df = pd.DataFrame({'A': range(1, 6), ... 'B': range(10, 0, -2), ... 'C C': range(10, 5, -1)}) >>> df A B C C 0 1 10 10 1 2 8 9 2 3 6 8 3 4 4 7 4 5 2 6 >>> df.query('A > B') A B C C 4 5 2 6Предыдущее выражение эквивалентно
>>> df[df.A > df.B] A B C C 4 5 2 6
Для столбцов с пробелами в имени можно использовать обратные кавычки.
>>> df.query('B == `C C`') A B C C 0 1 10 10Предыдущее выражение эквивалентно
>>> df[df.B == df['C C']] A B C C 0 1 10 10
-
© 2008–2012, AQR Capital Management, LLC, Lambda Foundry, Inc. and PyData Development Team
Licensed under the 3-clause BSD License.
https://pandas.pydata.org/pandas-docs/version/0.25.0/reference/api/pandas.DataFrame.query.html