首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫按块分组,而不是单个值。

熊猫按块分组,而不是单个值。
EN

Stack Overflow用户
提问于 2016-09-17 14:22:29
回答 1查看 1.2K关注 0票数 2

现在我有点搞不懂用熊猫把东西分组。

我有一组数据(超过60k行),有3列:

代码语言:javascript
复制
2015/12/18 11:12:49 +0300   d1  b1
2015/12/18 11:12:50 +0300   d2  b2
2015/12/18 11:13:08 +0300   d1  b3
2015/12/18 11:13:36 +0300   d2  b4
2015/12/18 11:13:43 +0300   d2  b5
2015/12/18 11:14:21 +0300   d2  c0
2015/12/18 11:14:42 +0300   d2  c1
2015/12/18 11:15:13 +0300   d1  c2
2015/12/18 11:15:19 +0300   d3  c3

我需要计算按时间段分组的行数(比如0-4,4-8,8-12等,4小时)和工作日,然后在一周内得到一组周期。

我可以在一周内每小时得到一笔钱(时间是第一栏的名字):

代码语言:javascript
复制
dind = pd.DatetimeIndex(df.time)
gr = df.groupby([dind.weekday, dind.hour])
gr.size()

但我不知道如何按块分组,然后将结果的MultiIndex合并到单个索引列中。

我希望这是对问题的清楚描述。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-09-17 14:37:01

您问题的第一部分,如何分组4小时块是很容易的,并在下面的两个选项中讨论。df.index.hour // 4

第二部分含糊不清,因为有几种解释“合并为一列”的方法。我给你提供了两种选择。

选项1

代码语言:javascript
复制
gpd = df.groupby([df.index.weekday, df.index.hour // 4]).size()
gpd.index = gpd.index.to_series()
gpd

(4, 2)    9
dtype: int64

选项2

代码语言:javascript
复制
gpd = df.groupby([df.index.weekday, df.index.hour // 4]).size()
gpd.index = ['{}_{}'.format(*i) for i in gpd.index]
gpd

4_2    9
dtype: int64
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39547873

复制
相关文章

相似问题

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