2016-12-13 38 views
-1

我正在处理一个熊猫数据框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 
    ... 

and

def calculate_results(): 
    df = calculate_df() 
    ... 

无论身在何处,我把作业,我得到UnboundLocalError: local variable referenced before assignment.

如何正确地传递一个局部变量来在大熊猫用户定义的函数?

回答

0

这不是将变量传递给函数。

您已经使用名称df来指代全局模块 - 在df.Col1...中,并且作为filter_df的结果。这会导致你看到的错误。

为本地变量使用不同的名称。

+0

我不太确定,如果我明白。如果符合df中的某些条件,我想重命名它并继续在函数def1中使用它。如果条件不满足,我想继续在函数def2中使用它。因此,在检查条件时,名称df必须相同(1),并且(2)在函数内。我想根据数据框内的条件将相同的数据帧传递给不同的函数。 – sudonym

+0

不,这没有任何意义,与您发布的代码或您遇到的问题无关。在一个函数中“重命名”一个变量对于如何将它传递给另一个函数完全没有任何作用。你应该发布足够的代码,以便我们可以看到你实际在做什么。 –

相关问题