熊猫帮助文件说(适用于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/