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 or unicode -
Выражение для вычисления. Эта строка не может содержать никаких операторов Python операторов, только выражения Python выражений.
-
parser : string, default ‘pandas’, {‘pandas’, ‘python’} -
Синтаксический анализатор для построения синтаксического дерева из выражения. По умолчанию
'pandas'анализирует код немного иначе, чем стандартный Python. В качестве альтернативы, вы можете проанализировать выражение с помощью синтаксического анализатора'python'для сохранения строгой семантики Python. Подробнее см. документацию по улучшению производительности. -
engine : string or None, default ‘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. Этот движок, как правило, не так полезен.
-
В будущем может быть доступно больше бэкэндов.
- None : пытается использовать
-
truediv : bool, optional -
Использовать ли истинное деление, как в Python >= 3
-
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
Возможные ошибки: - ValueError
-
Существует множество случаев, когда может быть поднята такая ошибка:
-
target=None, но выражение многострочное. -
Выражение многострочное, но не все строки имеют присваивание элемента. Примером такой организации является это:
a = b + 1 a + 2
Здесь есть выражения на разных строках, что делает его многострочным, но последняя строка не имеет переменной, присвоенной результату
a + 2. -
inplace=True, но выражение пропущено присваивание элемента. - Присваивание элемента предоставлено, но
targetне поддерживает присваивание элемента со строковым ключом. - Присваивание элемента предоставлено, и
inplace=False, ноtargetне поддерживает метод.copy()
-
См. также
Примечания
Тип любых объектов, участвующих в арифметической
%операции, рекурсивно приводится к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.25.0/reference/api/pandas.eval.html