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

古德温

现在,我有点困惑使用熊猫对东西进行分组。

我有3列的数据集(超过6万行):

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个小时)和工作日分组的行数,然后在一周内获取一组时间段。

我可以得到一周中每小时的总和(时间是第一栏的名称):

dind = pd.DatetimeIndex(df.time)
gr = df.groupby([dind.weekday, dind.hour])
gr.size()

但是我无法弄清楚如何按块分组,然后合并MultiIndex成单个索引列。

我希望它是对问题的清晰描述。

海盗

您的第一部分问题是,如何按4小时的时间块进行分组很容易,并且在下面的两个选项中都有介绍。 df.index.hour // 4

第二部分含糊不清,因为有多种方法可以解释“合并为单个列”。我为您提供了两种选择。

选项1

gpd = df.groupby([df.index.weekday, df.index.hour // 4]).size()
gpd.index = gpd.index.to_series()
gpd

(4, 2)    9
dtype: int64

选项2

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

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章