嗨,我必须创建一个在所有列上应用函数“ delete_outliers ”的函数。
首先我的数据是:
pnns_groups_1 ................................ object
pnns_groups_2 ................................ object
proteins_100g ................................ float64
fiber_100g ................................ float64
salt_100g ................................ float64
fat_100g ................................ float64
trans-fat_100g ................................ float64
carbohydrates_100g ................................ float64
sugars_100g ................................ float64
starch_100g ................................ float64
omega-3-fat_100g ................................ float64
nutrition_grade_fr ................................ float64
nutrition-score-fr_100g ................................ float64
energy_100g ................................ float64
dtype:对象
我创建了此函数:
*def delete_outliers(col):*
inf = (col.quantile(0.25)-(1.5* (col.quantile(0.75)-col.quantile(0.25))))
sup = (col.quantile(0.75)+(1.5*(col.quantile(0.75)-col.quantile(0.25))))
return col.between(inf,sup)*col
即使我从数据框中删除了 pnns_groups_1 和 pnns_groups_2 ,我也无法对所有数据框应用 detect_outlier 功能 float64 数据
我有一个属性错误:
AttributeError: 'DataFrame' object has no attribute 'between'
答案 0 :(得分:1)
您很可能会将DataFrame传递给函数,而不仅仅是传递列。 要将功能应用于多列,请使用
result = df.apply(delete_outliers, axis=0)
这会将您的函数应用于每个列(可以使用切片),并以DataFrame的形式返回结果。
有关完整方法的参考,请咨询Pandas documentation