Spec-Zone.ru › pandas 0.23

pandas.eval

pandas.eval(expr, parser='pandas', engine=None, truediv=True, 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 или unicode

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

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

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

engine : строка или None, по умолчанию ‘numexpr’, {‘python’, ‘numexpr’}

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

  • None: пытается использовать numexpr, переходит к python
  • 'numexpr': This default engine evaluates pandas objects using
    numexpr для значительного ускорения сложных выражений с большими фреймами.
  • 'python': Performs operations as if you had eval’d in top
    уровень python. Этот движок, как правило, не очень полезен.

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

truediv : bool, необязательно

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

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
Возможные исключения:

ValueError

Существует много случаев, когда может быть вызвано такое исключение:

  • target=None, но выражение многострочное.
  • Выражение многострочное, но не все из них имеют присваивание элементов. Пример такого расположения:

    a = b + 1 a + 2

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

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

См. также

pandas.DataFrame.query, pandas.DataFrame.eval

Примечания

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

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

© 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.eval.html

Spec-Zone.ru

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