2017-06-04 43 views
1

我想將函數應用於數據框,但更改該函數中使用的參數。我想:更改要應用於數據框的函數中使用的參數

  • 分配參數(parameters_df的每行)在計算中使用
  • 執行使用所述參數作爲輸入計算
  • 計算一些總結從該輪計算的通知(意味着在這個示例中評分)和使用的參數的下一行從parameters_df中的參數數據幀記錄此
  • 重複上述過程

我的實際代碼是MOR Ë合併更多的參數和更復雜的計算有多種輸出,但是這說明一個道理:

>>> 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

您沒有在兩個函數之間傳遞變量。您需要:

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 
相關問題