Spec-Zone.ru › pandas 0.25

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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API