mars.dataframe.DataFrame.eval#
- DataFrame.eval(expr, inplace=False, **kwargs)#
评估描述对DataFrame列进行操作的字符串。
仅对列进行操作,而不是特定的行或元素。这允许 eval 运行任意代码,如果您将用户输入传递给此函数,可能会使您容易受到代码注入的攻击。
- Parameters
- Returns
评估的结果。
- Return type
ndarray、标量或pandas对象
另请参阅
DataFrame.query评估布尔表达式以查询框架的列。
DataFrame.assign可以评估一个表达式或函数,以为列创建新值。
eval使用各种后端将Python表达式作为字符串进行评估。
备注
有关更多详细信息,请参见
eval()的API文档。有关详细示例,请参见使用eval增强性能。示例
>>> import mars.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