2016-12-13 7 views
-1

私はパンダのデータフレームdfを処理しています。 dfの特定の条件に応じて、df(1)をユーザ定義関数filter()またはcalculate_Result()に渡したいとします。条件のためのコードがされローカル変数をpandasのユーザ定義関数に渡すにはどうすればいいですか?

:しかし、私は UnboundLocalError: local variable referenced before assignment.

を得ています

if df.Col1.str.contains("yes").sum() > 0: 
    df = filter_df 
    filter() # Loop 
else: 
    df = calculate_df 
    calculate_result() # End 

私は関数定義そのものでdf = calculate_df & df = filter_df割り当てを入れたときにも、このエラーを取得しておきます

def filter(): 
    df = filter_df 
    ... 

および

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

いいえ、それは意味をなさない、あなたが投稿したコードやあなたが持っている問題とは関係がありません。ある関数の変数の名前を変更することは、他の関数に渡す方法とはまったく関係ありません。あなたが実際に何をしているかを見るために十分なコードを掲示するべきです。 –

関連する問題