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