首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >从函数返回数据帧不起作用吗?

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

Stack Overflow用户
提问于 2020-06-06 06:02:34
回答 1查看 98关注 0票数 1

我正在尝试创建以下函数。然而,当我将函数赋给原始数据帧时,它变成了空的。

代码语言:javascript
复制
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)] 

我分配如下:

代码语言:javascript
复制
train = remove_outliers('Power',train)
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-06-06 06:34:57

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

下面你可以看到一种可能的重写函数的方法来解决这个问题:

代码语言:javascript
复制
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)]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62224720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档