Spec-Zone.ru › pandas 2

pandas.DataFrame.eval

DataFrame.eval(expr, *, inplace=False, **kwargs)[source]

Оценить строку, описывающую операции над столбцами DataFrame.

Операции выполняются только над столбцами, а не конкретными строками или элементами. Это позволяет eval выполнять произвольный код, что может сделать вас уязвимыми к инъекции кода, если вы передаете пользовательский ввод в эту функцию.

Параметры:
expr:str

Строка выражения для оценки.

inplace:bool, по умолчанию False

Если выражение содержит присваивание, следует ли выполнить операцию на месте и изменить существующий DataFrame. В противном случае возвращается новый DataFrame.

**kwargs

См. документацию по eval() для получения полной информации о ключевых аргументах, принимаемых query().

Возвращает:
ndarray, скаляр, pandas-объект или None

Результат оценки или None, если inplace=True.

См. также

DataFrame.query

Оценивает булево выражение для запроса столбцов фрейма.

DataFrame.assign

Может оценить выражение или функцию для создания новых значений для столбца.

eval

Оценивает строковое представление Python-выражения с использованием различных бэкэндов.

Примечания

Дополнительные сведения см. в документации API по eval(). Подробные примеры см. в улучшении производительности с помощью eval.

Примеры

>>> df = pd.DataFrame({'A': range(1, 6), 'B': range(10, 0, -2)})
>>> df
   A   B
0  1  10
1  2   8
2  3   6
3  4   4
4  5   2
>>> df.eval('A + B')
0    11
1    10
2     9
3     8
4     7
dtype: int64

Разрешено присваивание, хотя по умолчанию исходный DataFrame не изменяется.

>>> df.eval('C = A + B')
   A   B   C
0  1  10  11
1  2   8  10
2  3   6   9
3  4   4   8
4  5   2   7
>>> df
   A   B
0  1  10
1  2   8
2  3   6
3  4   4
4  5   2

Несколько столбцов можно присвоить с помощью многострочных выражений:

>>> df.eval(
...     '''
... C = A + B
... D = A - B
... '''
... )
   A   B   C  D
0  1  10  11 -9
1  2   8  10 -6
2  3   6   9 -3
3  4   4   8  0
4  5   2   7  3

© 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/2.2.2/reference/api/pandas.DataFrame.eval.html

Spec-Zone.ru

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