2016-12-13 67 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

不,這沒有任何意義,與您發佈的代碼或您遇到的問題無關。在一個函數中「重命名」一個變量對於如何將它傳遞給另一個函數完全沒有任何作用。你應該發佈足夠的代碼,以便我們可以看到你實際在做什麼。 –

相關問題