pandas.DataFrame.query
-
DataFrame.query(expr, inplace=False, **kwargs)[source] -
Запрос столбцов фрейма с помощью булевого выражения.
Параметры: expr : строка
Строка запроса для оценки. Вы можете ссылаться на переменные в среде, предваряя их символом «@», например
@a + b.inplace : bool
Определяет, нужно ли изменять данные в месте или вернуть изменённую копию.
Введено в версии 0.18.0.
kwargs : dict
Полные сведения о ключевых аргументах, принимаемых
pandas.eval(), см. документациюpandas.eval()дляDataFrame.query().Возвращает: -
q : DataFrame
См. также
Примечания
Результат вычисления этого выражения сначала передаётся в
DataFrame.loc, и если это не удаётся из-за многомерного ключа (например, DataFrame), то результат будет передан вDataFrame.__getitem__().Этот метод использует функцию верхнего уровня
pandas.eval()для оценки переданного запроса.Метод
query()использует немного изменённый синтаксис Python по умолчанию. Например, операторы&и|(поразрядные) имеют приоритет своих булевых аналогов,andиor. Это действительно синтаксически корректный Python, однако семантика отличается.Вы можете изменить семантику выражения, передав ключевой аргумент
parser='python'. Это обеспечивает ту же семантику, что и оценка в пространстве Python. Аналогично, вы можете передатьengine='python'для оценки выражения с использованием самого Python в качестве бэкэнда. Это не рекомендуется, так как это неэффективно по сравнению с использованиемnumexprв качестве движка.Атрибуты
DataFrame.indexиDataFrame.columnsэкземпляраDataFrameпо умолчанию помещаются в пространство имён запроса, что позволяет рассматривать и индекс, и столбцы фрейма как столбец в фрейме. Идентификаторindexиспользуется для индекса фрейма; вы также можете использовать имя индекса для его идентификации в запросе. Обратите внимание, что ключевые слова Python не могут использоваться как идентификаторы.Дополнительные сведения и примеры см. в документации
queryв индексировании.Примеры
>>> from numpy.random import randn >>> from pandas import DataFrame >>> df = pd.DataFrame(randn(10, 2), columns=list('ab')) >>> df.query('a > b') >>> df[df.a > df.b] # same result as the previous expression -
© 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.23.4/generated/pandas.DataFrame.query.html