dask_expr._collection.DataFrame.eval

dask_expr._collection.DataFrame.eval

DataFrame.eval(expr, **kwargs)[源代码]

评估一个描述对DataFrame列进行操作的字符串。

此文档字符串是从 pandas.core.frame.DataFrame.eval 复制而来的。

Dask 版本可能存在一些不一致性。

仅对列进行操作,不对特定的行或元素进行操作。这允许 eval 运行任意代码,如果你将用户输入传递给此函数,可能会使你容易受到代码注入的攻击。

参数
表达式str

要计算的表达式字符串。

就地bool, 默认 False (Dask 中不支持)

如果表达式包含赋值操作,是否就地执行操作并改变现有的 DataFrame。否则,将返回一个新的 DataFrame。

**kwargs

有关 eval() 的完整详细信息,请参阅其文档,了解 query() 接受的键值参数。

返回
ndarray, 标量, pandas 对象, 或 None

评估的结果,如果 inplace=True 则为 None。

参见

DataFrame.query

评估一个布尔表达式以查询帧的列。

DataFrame.assign

可以计算表达式或函数来为列创建新值。

eval

使用各种后端评估作为字符串的Python表达式。

注释

更多详情请参阅 eval() 的API文档。详细示例请参阅 使用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