为了账号安全,请及时绑定邮箱和手机立即绑定

我正在尝试编写一个划分列 3 部分的函数

我正在尝试编写一个划分列 3 部分的函数

繁花如伊 2022-06-22 20:40:16
我正在尝试编写一个函数,该函数将列作为输入并将其分为短、中、长 3 部分,然后将它们作为列表返回。我试图用 loc 函数来做,但是,它返回一个数据框而不是一个列表。def DivideColumns(df,col):    mean = df[col].mean()    maxi  = df[col].max()    mini  = df[col].min()    less = mean - (maxi-mini)/3    more = mean + (maxi-mini)/3    short = df.loc[df[col] < less]    average = df.loc[df[col].between(df[col], less, more)]    long = df.loc[df[col] > more]    return short, average, long;我期望得到 3 个不同的列表,但不幸的是我得到了 3 个不同的数据框
查看完整描述

1 回答

?
冉冉说

TA贡献1877条经验 获得超1个赞

由于您使用的是熊猫,因此您可以使用分箱的概念。通过使用 pandascut函数,您可以划分您喜欢的范围,这使您的代码更易于阅读。更多信息在这里


def DivideColumns(df,col):

    mean = df[col].mean()

    maxi  = df[col].max()

    mini  = df[col].min()

    less = mean - (maxi-mini)/3

    more = mean + (maxi-mini)/3


    # binning

    bins_values = [mini, less, more, maxi]

    group_names = ['short', 'avarage', 'long']

    bins = pd.cut(df[col], bins_values, labels=group_names, include_lowest=True )



    short = (df[col][bins == 'short']).tolist()

    average = (df[col][bins == 'avarage']).tolist()

    long = (df[col][bins == 'long']).tolist()

    return short, average, long;


查看完整回答
反对 回复 2022-06-22
  • 1 回答
  • 0 关注
  • 148 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号