df=pd.DataFrame({"Age":[11,12,14,15,np.NaN,np.NaN],"Class":[10,11,10,11,9,9]})
df
def impute_age(cols):
Age = cols[0]
Class = cols[1]
if np.isnan(Age):
if Class == 10:
return 11
elif Class == 11:
return 12
else:
return 9
else:
return Age
df.apply(impute_age,axis=1)
在此impute_age函数中,它将第一行称为cols [0],但是如果我们使用cols [0]在函数外部调用数据框的列,则由于必须指定列名,它将显示错误。为什么?
如果选中print(cols)
它,则返回DataFrame的每一行,例如Series,因此如果要按位置选择,请使用iat
:
def impute_age(cols):
print (cols)
Age = cols.iat[0]
Class = cols.iat[1]
if np.isnan(Age):
if Class == 10:
return 11
elif Class == 11:
return 12
else:
return 9
else:
return Age
或按列名选择:
def impute_age(cols):
print (cols)
Age = cols['Age']
Class = cols['Class']
if np.isnan(Age):
if Class == 10:
return 11
elif Class == 11:
return 12
else:
return 9
else:
return Age
df = df.apply(impute_age,axis=1)
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句