maxframe.dataframe.DataFrame.eval#

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

对描述 DataFrame 列操作的字符串进行求值。

仅对列进行操作,不对特定行或元素进行操作。这使得 eval 可以运行任意代码,如果您将用户输入传递给此函数,可能会导致代码注入漏洞。

参数:
  • expr (str) -- 要求值的表达式字符串。

  • inplace (bool, default False) -- 如果表达式包含赋值操作,是否就地执行操作并修改现有的 DataFrame。否则,将返回一个新的 DataFrame。

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

返回:

求值的结果。

返回类型:

ndarray, scalar, or pandas object

参见

DataFrame.query

对布尔表达式进行求值,以查询帧的列。

DataFrame.assign

可以对表达式或函数进行求值,以为列创建新值。

eval

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

备注

有关更多详细信息,请参阅 eval() 的 API 文档。有关详细示例,请参阅 使用 eval 提高性能

示例

>>> import maxframe.dataframe as md
>>> df = md.DataFrame({'A': range(1, 6), 'B': range(10, 0, -2)})
>>> df.execute()
   A   B
0  1  10
1  2   8
2  3   6
3  4   4
4  5   2
>>> df.eval('A + B').execute()
0    11
1    10
2     9
3     8
4     7
dtype: int64

允许赋值操作,但默认情况下不会修改原始 DataFrame。

>>> df.eval('C = A + B').execute()
   A   B   C
0  1  10  11
1  2   8  10
2  3   6   9
3  4   4   8
4  5   2   7
>>> df.execute()
   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.execute()
   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
... ''').execute()
   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