Python中for循环仅处理首个变量,其余变量未执行的问题求助
问题原因与解决方案
你的代码里的**return i语句被放在了for循环内部**,这是导致循环只处理第一个变量的核心原因。
return语句的作用是立即终止函数并返回指定值,当循环第一次处理Infant_Deaths后,函数就执行了return i,直接结束了整个函数的运行,后续的特征(比如Hepatitis、Measles等)根本没有机会进入循环逻辑。
修正后的代码
把return语句移出循环(如果不需要返回值,甚至可以直接删掉):
def outliers(features, df): for i in features: Q1 = df[i].quantile(0.25) Q3 = df[i].quantile(0.75) IQR = Q3 - Q1 upper = Q3 + (1.5 * IQR) lower = Q1 - (1.5 * IQR) df.loc[(df[i] > upper), i] = upper df.loc[(df[i] < lower), i] = lower # 若需返回处理后的特征列表,可在此添加 return features # 不需要返回值则无需写return outliers(['Infant_Deaths','Hepatitis', 'Measles', 'Underfive_Deaths', 'Polio', 'Diphtheria', 'HIV', 'GDP', 'Population','Malnourished10_19','Malnourished5_9', 'Income_Index', 'Schooling'], df)
补充说明
你是在传入的DataFramedf上进行原地修改,所以函数执行完成后,原df就已经是处理好的数据,不需要依赖函数返回值就能查看结果。如果确实需要返回内容,确保return语句在循环全部执行完毕后再触发。
内容的提问来源于stack exchange,提问作者Daddu
相关产品推荐
相关产品推荐

