Spec-Zone.ru › pandas 2

pandas.eval

pandas.eval(expr, parser='pandas', engine=None, local_dict=None, global_dict=None, resolvers=(), level=0, target=None, inplace=False)[source]

Оцените строковое выражение Python с использованием различных бэкэндов.

Поддерживаются следующие арифметические операции: +, -, *, /, **, %, // (только движок Python) вместе со следующими логическими операциями: | (или), & (и), и ~ (не). Кроме того, синтаксический анализатор 'pandas' позволяет использовать and, or, и not с той же семантикой, что и соответствующие побитовые операторы. Series и DataFrame объекты поддерживаются и ведут себя так же, как и при обычной оценке в Python.

Параметры:
expr:str

Выражение для вычисления. Эта строка не может содержать никаких Python-команд выражений, только Python выражения.

parser:{‘pandas’, ‘python’}, по умолчанию ‘pandas’

Парсер, используемый для построения синтаксического дерева из выражения. По умолчанию 'pandas' анализирует код немного по-другому, чем стандартный Python. В качестве альтернативы, вы можете проанализировать выражение с помощью парсера 'python', чтобы сохранить строгую семантику Python. Дополнительные сведения см. в документации по улучшению производительности.

engine:{‘python’, ‘numexpr’}, по умолчанию ‘numexpr’

Двигатель, используемый для вычисления выражения. Поддерживаемые движки:

  • None : пытается использовать numexpr, в противном случае использует python

  • 'numexpr' : Этот движок по умолчанию вычисляет объекты pandas с помощью numexpr для существенного повышения скорости в сложных выражениях с большими фреймами.

  • 'python' : Выполняет операции так, как будто вы выполнили их eval в верхнем уровне Python. Как правило, этот движок не очень полезен.

В будущем могут быть доступны и другие бэкэнды.

local_dict:dict или None, необязательно

Словарь локальных переменных, по умолчанию взятый из locals().

global_dict:dict или None, необязательно

Словарь глобальных переменных, по умолчанию взятый из globals().

resolvers:список dict-подобных объектов или None, необязательно

Список объектов, реализующих специальный метод __getitem__, который вы можете использовать для вставки дополнительного набора пространств имен для поиска переменных. Например, это используется в методе query() для вставки переменных DataFrame.index и DataFrame.columns, которые ссылаются на атрибуты экземпляра DataFrame.

level:int, необязательно

Количество предыдущих кадров стека для обхода и добавления в текущий объем. Большинству пользователей не нужно изменять этот параметр.

target:объект, необязательно, по умолчанию None

Это целевой объект для присвоения. Он используется, когда в выражении происходит присвоение переменной. В таком случае target должен поддерживать присвоение элемента со строковыми ключами, а если возвращается копия, то он также должен поддерживать .copy().

inplace:bool, по умолчанию False

Если target предоставлен, и выражение изменяет target, то следует ли изменить target на месте. В противном случае возвращается копия target с произведённым изменением.

Возвращаемое значение:
ndarray, числовой скаляр, DataFrame, Series или None

Значение завершения вычисления данного кода или None, если inplace=True.

Исключения:
ValueError

Возникает во многих случаях:

  • target=None, но выражение многострочное.

  • Выражение многострочное, но не все строки содержат присвоение элемента. Пример такого расположения:

    a = b + 1 a + 2

    Здесь есть выражения на разных строках, что делает их многострочными, но в последней строке нет переменной, присвоенной результату a + 2.

  • inplace=True, но выражение не содержит присвоения элемента.

  • Присвоение элемента предоставлено, но target не поддерживает присвоение элемента со строковым ключом.

  • Присвоение элемента предоставлено и inplace=False, но target не поддерживает метод .copy()

См. также

DataFrame.query

Вычисляет булево выражение для запроса столбцов фрейма.

DataFrame.eval

Вычисляет строку, описывающую операции со столбцами DataFrame.

Примечания

Тип dtype любых объектов, участвующих в арифметической % операции, рекурсивно преобразуется к float64.

См. документацию улучшения производительности для получения дополнительной информации.

Примеры

>>> df = pd.DataFrame({"animal": ["dog", "pig"], "age": [10, 20]})
>>> df
  animal  age
0    dog   10
1    pig   20

Мы можем добавить новый столбец, используя pd.eval:

>>> pd.eval("double_age = df.age * 2", target=df)
  animal  age  double_age
0    dog   10          20
1    pig   20          40

© 2008–2022, 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/2.2.2/reference/api/pandas.eval.html

Spec-Zone.ru

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