熊猫帮助文件说(用于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)
但是,这确实具有创建额外列的副作用。
更新:
我已经提交了具有此问题的修复程序的请求请求。
当你在函数定义内声明变量的时候,它们与函数外具有相同名称的其他变量没有任何关系,即变量名称对于函数来说是 局部 的。这称为变量的 作用域 。所有变量的作用域是它们被定义的块,从它们的名称被定义的那点开始。 使用局部变量 例7.3 使用局部变量 #!/usr/bin/python # Filename: func_local.py deffunc(x): print'x is', x
问题内容: 我正在使用函数,这样我的程序就不会一团糟,但我不知道如何将局部变量变成全局变量。 问题答案: 这是两种实现相同目的的方法: 使用参数并返回(推荐) 运行时,将获得以下输出 使用全局变量(永远不要这样做) 现在您将获得:
问题内容: 我了解Python中局部变量和全局变量的概念,但是我只是有一个问题,为什么下面的代码中会出现错误?Python逐行执行代码,因此在读取第5行之前,它不知道a是局部变量。Python尝试执行第5行后,会回退一行并将其标记为错误吗? 问题答案: 设置和测试 为了分析您的问题,让我们创建两个独立的测试函数来复制您的问题: 版画。因此,调用此函数不是问题,而是在下一个函数上: 我们收到一个错误
我有以下Powershell代码: 我应该如何声明可以传递给函数的局部变量。我的局部变量$file被填充,但当我将其作为其他函数的参数时,它就像它超出了范围。 我读了关于scopes的文章,但没能弄明白。 当前我收到错误: ini文件:D:\Projects\scripts\Configs\HBOX。ini测试路径:无法将参数绑定到参数“Path”,因为它是空字符串。在D:\项目\自由职业者。co
怎样使一个变量变成“局部”变量? 局部变量 如果变量用local来声明,那么它就只能够在该变量被声明的代码块中可见。 这个代码块就是局部范围。 在一个函数中,一个局部变量只有在函数代码中才有意义.[1] 例子 24-12. 局部变量的可见范围 #!/bin/bash # ex62.sh: 函数内部的局部变量与全局变量。 func () { local loc_var=23 #
问题内容: 我还是Python的新手,我一直在尝试提高Python脚本的性能,因此我在有或没有全局变量的情况下对其进行了测试。我给它计时,令我惊讶的是,它在声明了全局变量的情况下运行得更快,而不是将局部变量传递给函数。这是怎么回事?我以为局部变量的执行速度更快?(我知道全球人并不安全,我仍然很好奇。) 问题答案: 当地人应该更快 根据此页面上的本地人和全球人: 当一行代码要求输入变量x的值时,Py