Spec-Zone.ru › pandas 0.25

pandas.DataFrame.eval

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

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

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

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

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

inplace : bool, default False

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

Новое в версии 0.18.0..

kwargs : dict

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

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

Результат оценки.

См. также

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

Используйте inplace=True для изменения исходного DataFrame.

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

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

Spec-Zone.ru

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