pandas.DataFrame.eval
- DataFrame.eval(expr, inplace=False, **kwargs)[source]
-
Оценить строку, описывающую операции над столбцами DataFrame.
Операции выполняются только над столбцами, а не над конкретными строками или элементами. Это позволяет eval выполнять произвольный код, что может сделать вас уязвимым к инъекции кода, если вы передаете пользовательский ввод в эту функцию.
- Параметры
-
- expr:str
-
Строка выражения для оценки.
- inplace:bool, по умолчанию False
-
Если выражение содержит присваивание, нужно ли выполнить операцию inplace и изменить существующий 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Используйте
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Несколько столбцов можно присвоить с помощью многострочных выражений:
>>> 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/1.5.0/reference/api/pandas.DataFrame.eval.html