我正在尝试编写一个函数,该函数将列作为输入并将其分为短、中、长 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
提交
取消
