2017-02-22 10 views
-2

私はパンダのデータフレーム内に大量のカラムを持っており、それらのグループを関数で渡す必要があります。関数は大きいですが、私は以下の例を作成します。変数の問題を取得せずに関数にdf.varNameの参照を渡す方法がわかりません。パンダのデータフレームとカラムを関数に渡す方法

def bianco2(df, varX, varT): 
    stdX = np.std(df.varX) 
    stdT = np.std(df.varT) 
    newVar = stdX + stdT 
    return newVar 

varXが定義されていないというエラーが表示されます。だから私は全体フレーズを渡す関数を書いた:

def bianco3(varX, varT): 
    stdX = np.std(varX) 
    stdT = np.(varT) 
    newVar = stdX + stdT 
    return newVar 

ここで "varX = df.varX"。

これは機能しましたが、多数の変数に対しては実用的ではありません。なぜなら、各varXとvarTを手動で更新する必要があるからです。だから、私はdf.varXの形式で変数のリストを作成し、forループを使って変数のリストを渡そうとしました。問題は、pythonは参照ではなく文字列として認識します。私はfunctools.partialを使ってみましたが失敗しました。

これを簡単な形式で記述し、パンダの列を関数に渡す方法については、

+1

あなたは何を意味するかわかりません。 'bianco2'とどうやって呼びますか? [mcve]を投稿してみてください。 – Goyo

答えて

0

お試しください。

def bianco2(df, varX, varT): 
    stdX = np.std(df[varX]) 
    stdT = np.std(df[varT]) 
    newVar = stdX + stdT 
    return newVar 

print bianco2(df,'Customer','Policy') 

入力

Policy Customer Employee CoveredDate LapseDate 
0  123  1234  1234 2011-06-01 2013-01-01 
1  124  1234  1234 2016-01-01 2013-01-01 
2  124  5678  5555 2014-01-01 2013-01-01 

出力

2095.39309492 
+0

ありがとうございました!それは私の問題を簡素化するはずです。 – dbianco

関連する問題