如何将局部变量传递给熊猫中的用户定义函数?
Posted
技术标签:
【中文标题】如何将局部变量传递给熊猫中的用户定义函数?【英文标题】:How to pass a local variable to a user-defined function in pandas? 【发布时间】:2016-12-13 08:59:29 【问题描述】:我正在处理一个熊猫数据框df
。根据df
中的某些条件,我想将df
(1) 传递给用户定义的函数filter()
或(2) 传递给calculate_Result()
。
条件代码为:
if df.Col1.str.contains("yes").sum() > 0:
df = filter_df
filter() # Loop
else:
df = calculate_df
calculate_result() # End
但是,我产生了UnboundLocalError: local variable referenced before assignment.
当我将 df = calculate_df
和 df = filter_df
赋值放入函数定义本身时,我也不断收到此错误:
def filter():
df = filter_df
...
和
def calculate_results():
df = calculate_df()
...
无论我把作业放在哪里,我都会让步UnboundLocalError: local variable referenced before assignment.
如何正确地将局部变量传递给 pandas 中的用户定义函数?
【问题讨论】:
【参考方案1】:这与将变量传递给函数无关。
您使用名称 df
来指代全局模块 - 在 df.Col1...
中以及作为 filter_df
的结果。这会导致您看到的错误。
为局部变量使用不同的名称。
【讨论】:
我不太确定我是否理解。如果满足 df 中的某些条件,我想重命名它并在函数 def1 中继续使用它。如果不满足条件,我想在函数 def2 中继续使用它。因此,名称 df 在检查条件时必须与 (2) 在函数内相同。我想根据数据帧中的条件将相同的数据帧传递给不同的函数。 没有。这没有任何意义,并且与您发布的代码或您遇到的问题无关。在一个函数中“重命名”一个变量完全没有与你如何将它传递给另一个函数有关。您应该发布足够的代码,以便我们可以看到您实际在做什么。以上是关于如何将局部变量传递给熊猫中的用户定义函数?的主要内容,如果未能解决你的问题,请参考以下文章
将局部变量传递给 create.js.erb 以进行迭代中的迭代
Rails 6 - 传递给部分时未定义的局部变量,但当我将调试器放入 erb 文件时定义了它