我只想对数据框中的几个NA单元进行KNN测试。我想用接近的数据填充这些数据,我必须使它适用于我的测试数据框架,所以我不仅要设置它。我想填写MasVnrArea中的值
StyleAndYrDF= trainDF.loc[:,['YearBuilt','Exterior1st','Exterior2nd']]
Temp=trainDF.loc[230:234, ['MasVnrArea']]
def fillIt(df,x):
ID= findNearestHOF(df, x)
return trainDF.loc[ID,'MasVnrArea']
EstimatedMasVnr=Temp.apply(lambda x: fillIt(StyleAndYrDF,x) if (pd.isna(x.loc['MasVnrArea'])) else x.loc['MasVnrArea'])
我不断收到此错误:KeyError :(“ MasVnrArea”,“发生在索引MasVnrArea”)
最佳答案
您正在错误的方向进行应用。这将解决您的问题:
EstimatedMasVnr = Temp.apply(lambda x: fillIt(StyleAndYrDF,x) if (pd.isna(x.loc['MasVnrArea'])) else x.loc['MasVnrArea']
, axis=1)
另外,我认为这种表示法更简洁:
EstimatedMasVnr = Temp.apply(lambda row: fillIt(StyleAndYrDF,row)
if (pd.isna(row['MasVnrArea']))
else row['MasVnrArea']
, axis=1)