当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python pandas.DataFrame.eval用法及代码示例


用法:

DataFrame.eval(expr, inplace=False, **kwargs)

评估说明对 DataFrame 列的操作的字符串。

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

参数

exprstr

要评估的表达式字符串。

inplace布尔值,默认为 False

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

**kwargs

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

返回

ndarray、标量、pandas 对象或无

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

注意

有关更多详细信息,请参阅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

使用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

可以使用 multi-line 表达式分配多个列:

>>> 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

相关用法


注:本文由纯净天空筛选整理自pandas.pydata.org大神的英文原创作品 pandas.DataFrame.eval。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。