首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Pandas cut()对记录进行分组?

如何使用Pandas cut()对记录进行分组?
EN

Stack Overflow用户
提问于 2018-05-26 06:20:58
回答 1查看 746关注 0票数 0

我的目标是将n记录按4分组,例如:

代码语言:javascript
复制
0-3
4-7
8-11
etc.

根据其他列中的一列,找到每组4个的csv值,并创建一个新的数据集或max()文件。max()操作将在一列上执行,而其他列保持不变。

基于我在这里所做的研究(Stackoverflow),我尝试在我的数据集上自定义和应用以下解决方案,但它没有给我带来期望:

代码语言:javascript
复制
# Group by every 4 row until the len(dataset)
groups = dataset.groupby(pd.cut(dataset.index, range(0,len(dataset),3))
needataset = groups.max()

我得到了类似如下的结果:

代码语言:javascript
复制
Column 1  Column 2 ... Column n
0. (0,3]
1. (3,6]

max()操作的目标列也没有产生预期的结果。我将感谢任何关于解决这个问题的指导。

EN

回答 1

Stack Overflow用户

发布于 2018-05-26 07:07:11

这个例子应该会对你有所帮助。在这里,我使用步骤5创建了一个介于0和100之间的随机值的DataFrame,并将这些值分组为4个一组(sort_values非常重要,它会让您的工作更轻松)

代码语言:javascript
复制
df = pd.DataFrame({'value': np.random.randint(0, 100, 5)})
df = df.sort_values(by='value')
labels = ["{0} - {1}".format(i, i + 4) for i in range(0, 100, 5)]
df['group'] = pd.cut(df.value, range(0, 105, 5), right=False, labels=labels)
groups = df["group"].unique()

然后为最大值创建一个数组

代码语言:javascript
复制
max_vals = np.zeros((len(groups)))
for i, group in enumerate(groups):
    max_vals[i] = max(df[df["group"] == group]["value"])

然后从这些最大值中找出一个DataFrame

代码语言:javascript
复制
pd.DataFrame({"group": groups, "max value": max_vals})
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50537527

复制
相关文章

相似问题

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