我正在嘗試編寫一個函數,該函數將列作為輸入并將其分為短、中、長 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;
添加回答
舉報
0/150
提交
取消
