pandas.DataFrame.eval#

DataFrame.eval(expr, *, inplace=False, **kwargs)[источник]#

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

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

Параметры:
exprstr

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

inplacebool, по умолчанию 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