pandas.eval#
- pandas.eval(expr, parser='pandas', движок=None, local_dict=None, global_dict=None, резолверы=(), уровень=0, цель=None, inplace=False)[источник]#
Вычислить выражение Python в виде строки с использованием различных бэкендов.
Поддерживаются следующие арифметические операции:
+,-,*,/,**,%,//(только для движка python) вместе со следующими логическими операциями:|(или),&(и), и~(не). Кроме того,'pandas'парсер позволяет использоватьand,or, иnotс той же семантикой, что и соответствующие побитовые операторы.SeriesиDataFrameобъекты поддерживаются и ведут себя так же, как при обычной оценке Python.- Параметры:
- exprstr
Выражение для вычисления. Эта строка не может содержать Python утверждения, только Python выражения.
- parser{‘pandas’, ‘python’}, по умолчанию ‘pandas’
Парсер для построения синтаксического дерева из выражения. По умолчанию
'pandas'парсит код немного иначе, чем стандартный Python. В качестве альтернативы, вы можете разобрать выражение, используя'python'парсеру для сохранения строгой семантики Python. См. улучшение производительности документация для более подробной информации.- движок{‘python’, ‘numexpr’}, по умолчанию ‘numexpr’
Движок, используемый для вычисления выражения. Поддерживаемые движки:
None : пытается использовать
numexpr, возвращается кpython'numexpr': Этот движок по умолчанию оценивает объекты pandas с использованием numexpr для значительного ускорения сложных выражений с большими фреймами.'python': Выполняет операции, как если бы у вас былоeval’d в верхнем уровне python. Этот движок обычно не очень полезен.
В будущем могут быть доступны дополнительные бэкенды.
- local_dictdict или None, опционально
Словарь локальных переменных, по умолчанию берётся из locals().
- global_dictdict или None, опционально
Словарь глобальных переменных, по умолчанию берётся из globals().
- резолверысписок dict-подобных объектов или None, опционально
Список объектов, реализующих
__getitem__специальный метод, который вы можете использовать для добавления дополнительной коллекции пространств имён для поиска переменных. Например, это используется вquery()метод для внедренияDataFrame.indexиDataFrame.columnsпеременные, которые ссылаются на соответствующиеDataFrameатрибуты экземпляра.- уровеньint, необязательный
Количество предыдущих кадров стека для обхода и добавления к текущей области видимости. Большинство пользователей не необходимо изменить этот параметр.
- цельобъект, опционально, по умолчанию None
Это целевой объект для присваивания. Он используется при присваивании переменной в выражении. Если так, то цель должен поддерживать присвоение элементов строковыми ключами, и если возвращается копия, она также должна поддерживать .copy().
- inplacebool, по умолчанию False
Если цель предоставлено, и выражение изменяет цель, следует ли изменять цель inplace. В противном случае вернуть копию цель с мутацией.
- Возвращает:
- ndarray, числовой скаляр, DataFrame, Series или None
Значение завершения выполнения данного кода или None, если
inplace=True.
- Вызывает:
- ValueError
Существует множество случаев, когда может возникнуть такая ошибка:
target=None, но выражение многострочное.
Выражение многострочное, но не все строки содержат присваивание элементов. Пример такого расположения:
a = b + 1 a + 2
Здесь есть выражения на разных строках, что делает его многострочным, но последняя строка не имеет переменной, назначенной для вывода a + 2.
inplace=True, но в выражении отсутствует присваивание элемента.
Присваивание элементов предоставляется, но цель не поддерживает присваивание строковых элементов.
Назначение элементов предоставляется и inplace=False, но цель не поддерживает .copy() метод
Смотрите также
DataFrame.queryВычисляет логическое выражение для запроса к столбцам фрейма.
DataFrame.evalВычислить строку, описывающую операции над столбцами DataFrame.
Примечания
The
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