我创建了一个函数来删除我的离群点。这是函数
def dropping_outliers(train, condition):
drop_index = train[condition].index
#print(drop_index)
train = train.drop(drop_index,axis = 0)当我做的时候
dropping_outliers(train, ((train.SalePrice<100000) & (train.LotFrontage>150)))当我手动执行函数时,没有什么是dropped.However。在这种情况下,我确实得到了一个有效的索引(943),并且当我这样做的时候
train = train.drop([943],axis = 0)那么我想要的行被正确地删除了。我不明白为什么函数会不工作,因为它应该做的正是我正在做的手动。
发布于 2022-02-12 16:55:17
在dropping_outliers的末尾,它将drop的结果分配给一个局部变量,而不是改变传入的数据。试一试:
def dropping_outliers(train, condition):
drop_index = train[condition].index
#print(drop_index)
return train.drop(drop_index,axis = 0)然后在调用函数时执行赋值。
train = dropping_outliers(train, ((train.SalePrice<100000) & (train.LotFrontage>150)))也见python pandas dataframe, is it pass-by-value or pass-by-reference。
https://stackoverflow.com/questions/71093872
复制相似问题