从函数返回数据帧不起作用?

混沌管理

我正在尝试创建以下功能。但是,当我将功能分配给原始数据框时,它变为空。

def remove_outliers(feature, df):
    q1 = np.percentile(df[feature], 25) 
    q2 = np.percentile(df[feature], 50) 
    q3 = np.percentile(df[feature], 75) 

    iqr = q3-q1    
    lower_whisker = df[df[feature] <= q1-1.5*iqr][feature].max()
    upper_whisker = df[df[feature] <= q3+1.5*iqr][feature].max()

    return  df[(df[feature] < upper_whisker) & (df[feature]>lower_whisker)] 

我分配如下:

train = remove_outliers('Power',train)
塞德里克·佐波罗

您面临的问题是变量lower_whisker和/或upper_whisker设置为,NaN因此该函数的结果为空的DataFrame。您只需检查这些结果即可解决此问题,然后返回所需的结果。

在下面,您可以看到重写函数以解决此问题的可能方法:

def remove_outliers(feature, df):
    q1 = np.percentile(df[feature], 25)
    q2 = np.percentile(df[feature], 50)
    q3 = np.percentile(df[feature], 75)

    iqr = q3-q1
    lower_whisker = df[df[feature] <= q1-1.5*iqr][feature].max()
    upper_whisker = df[df[feature] <= q3+1.5*iqr][feature].max()
    if lower_whisker is np.nan:
        return df[(df[feature]>lower_whisker)]
    elif upper_whisker is np.nan:
        return df[(df[feature] < upper_whisker)]
    else:
        return df[(df[feature] < upper_whisker) & (df[feature]>lower_whisker)]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章