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()
См. также
Примечания
Тип любых объектов, участвующих в арифметической
%операции, рекурсивно приводится кfloat64.См. документацию по улучшению производительности для получения дополнительной информации.
- None: пытается использовать
© 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