2017-06-04 11 views
1

データフレームに関数を適用したいが、その関数で使用されるパラメータを変更したい。私がしたい:データフレームに適用する関数に使用されるパラメータを変更する

  • は、計算に使用するパラメータ(parameters_dfの各列)を割り当てる
  • 入力
  • は、いくつかの要約は計算のラウンドから通知計算などのパラメータを使用して計算を行います(この例ではスコアの平均)と私の実際のコードはMORであるパラメータデータフレームに
  • 繰り返し上記のプロセスをparameters_dfからのパラメータの次の行を使用して、

これを記録eは、より多くのパラメータおよび出力の様々なより複雑な計算を合併するが、これは原則を示しています。これは私のコードである

>>> parameters_df # these are the parameters that I want to loop through 
a b c mean_output # (this is what I want to calculate) 
1 2 3 
1 3 5 

>>> calc_df 
name category score # output(this is what I want to calculate) 
John a   50 
Jill c   60 
Jenny b   70 
Jeff a   80 

def set_parameters(row): 
    parameter_dict = {a: row['a'], 1:row['b'], 2:row['c']} 
    parameter_df['output'] = parameter_df.apply(calc, axis=1) 
    return parameter_df['output'].mean(axis = 1) 

def calc(row): 
    output = parameter_dict[row['parameter_df']] * 2 
    return output 

parameters_df['mean_score'] = parameters_df.apply(set_parameters, axis = 1) 

をしかし、私はこのエラーコードを取得する:

( "名前 'parameter_dict' が定義されていません"、 'インデックス0で発生した'、 'インデックス0で発生した')が

これは、calc関数を実行するときのように、setパラメータがcalc関数を計算に使用していても、set_parameters関数で定義したパラメータ辞書を見つけることができません。

私は間違っていますか?

答えて

0

2つの関数の間で変数を渡していません。

def set_parameters(row): 
    parameter_dict = {a: row['a'], 1:row['b'], 2:row['c']} 
    parameter_df['output'] = parameter_df.apply(calc, args=(parameter_dict,), axis=1) 
    return parameter_df['output'].mean(axis = 1) 

def calc(row, parameter_dict): 
    output = parameter_dict[row['parameter_df']] * 2 
    return output 
関連する問題