Spec-Zone.ru › pandas 1

pandas.eval

pandas.eval(expr, parser='pandas', engine=None, truediv=_NoDefault.no_default, 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’}, default ‘pandas’

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

engine:{‘python’, ‘numexpr’}, default ‘numexpr’

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

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

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

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

В будущем может быть доступно больше бэкендов.

truediv:bool, optional

Использовать деление с плавающей точкой, как в Python >= 3.

Устарело начиная с версии 1.0.0.

local_dict:dict or None, optional

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

global_dict:dict or None, optional

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

resolvers:list of dict-like or None, optional

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

level:int, optional

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

target:object, optional, default None

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

inplace:bool, default 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/1.5.0/reference/api/pandas.eval.html

Spec-Zone.ru

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