亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我正在嘗試編寫一個劃分列 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 關注
  • 131 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號