pandas.DataFrame.eval#

DataFrame.eval(expr, inplace=False, **kwargs)[源代码]#

计算描述DataFrame列上的操作的字符串。

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

参数
expr应力

要计算的表达式字符串。

inplace布尔值,默认为False

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

**kwargs

请参阅的文档 eval() 有关接受的关键字参数的完整详细信息 query()

退货
Ndarray、标量、Pandas对象或无

如果是,则返回评估结果或无 inplace=True

参见

DataFrame.query

计算布尔表达式以查询框架的列。

DataFrame.assign

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

eval

使用各种后端将Python表达式作为字符串进行求值。

注意事项

有关更多详细信息,请参阅 eval() 。有关详细示例,请参见 enhancing performance with 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