我的代码如下。如果我通过第一种方法调用该函数,它就可以工作。但是如果我使用第二种方法调用该函数,我会收到错误。我认为方法二应该工作,因为函数期望列作为其输入。为什么我们不得不说如方法1中所描述的那样在列上运行函数?
train
是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 :(得分: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
之后进行缩进。