2017-09-19 86 views
-1

我有如下代碼。如果我用第一種方法調用函數,它就可以工作。但如果我使用第二種方法調用函數,則會出現錯誤。我認爲方法二應該工作,因爲函數期望列作爲其輸入。爲什麼我們不得不說按照方法1的描述在列上運行函數?功能利用 - 使用應用與直接呼叫呼叫

trainpandas數據幀。

import pandas as pd 

def impute_age(cols): 
    Age = cols[0] 
    Pclass = cols[1] 

    if pd.isnull(Age): 
     if Pclass == 1: 
      return 37 
     elif Pclass == 2: 
      return 29 
     else: 
      return 24 
    else: 
     return Age 

#pd.isnull(train[['Age']]) 

#method 1 
#train['Age'] = train[['Age','Pclass']].apply(impute_age, axis=1) 

#method 2 
impute_age(train[['Age','Pclass']]) 
+0

什麼是'pd',最重要的是什麼'train'? –

+0

pd =大熊貓和火車是一個數據幀..對混淆忍受 – user2543622

回答

0

我覺得首先你需要一個格式良好的代碼:

import pandas as pd 
def impute_age(cols): 
    Age = cols[0] 
    Pclass = cols[1] 

    if pd.isnull(Age): 

     if Pclass == 1: 
      return 37 

     elif Pclass == 2: 
      return 29 

     else: 
      return 24 

    else: 
     return Age 


#pd.isnull(train[['Age']]) 

#method 1 
#train['Age'] = train[['Age','Pclass']].apply(impute_age,axis=1) 

#method 2 
impute_age(train[['Age','Pclass']]) 

在一個字,你需要def後縮進。

+0

大聲笑'在一個字' – TallChuck

+0

謝謝...但仍然我得到相同的錯誤:( – user2543622