熊猫帮助文件说(适用于eval):
为方便起见,可以通过使用多行字符串来执行多个分配。

但是,我发现这不适用于变量(使用ipython):

这有效:

df_price.eval("op = op * @mult", inplace = True)


但这不起作用(op,cl,hi,lo是数据帧df_price中的cols,其中mult是一个浮点数):

df_price.eval("""op = op * @mult
              cl = cl * @mult
              hi = hi * @mult
              lo = lo * @mult""", inplace = True)


错误:
pandas.computation.ops.UndefinedVariableError:本地变量“ mult”未定义

最佳答案

我可以确认局部变量似乎仅在多行eval表达式的第一行上起作用。可能的解决方法:

df_price.eval("""mult = @mult
              op = op * mult
              cl = cl * mult
              hi = hi * mult
              lo = lo * mult""", inplace = True)


但是,这确实具有创建额外列的副作用。

更新:

我已经提交了Pull Request并提供了针对此问题的修复程序。

关于python - 将局部变量与pandas eval函数配合使用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42079201/

10-12 22:53