2017-09-19 2 views
-1

J'ai le code comme ci-dessous. Si j'appelle la fonction par la première méthode, cela fonctionne. Mais si j'appelle la fonction en utilisant la seconde méthode, j'obtiens une erreur. Je pensais que la méthode deux devrait fonctionner comme la fonction attend des colonnes comme son entrée. Pourquoi devons-nous dire que l'exécution de la fonction sur les colonnes comme décrit dans la méthode 1?utilisation de la fonction - appel utilisant apply vs appel direct

train est la trame de données pandas.

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

Qu'est-ce que 'pd' et surtout: qu'est-ce que' train'? –

+0

pd = pandas et train est un dataframe..sorry pour la confusion – user2543622

Répondre

0

Je pense d'abord vous avez besoin d'un code bien formaté:

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']]) 

En un mot, vous avez besoin après tirets def.

+0

lol 'en un mot' – TallChuck

+0

merci ... mais je reçois la même erreur :( – user2543622