我有一个长达一年的大型数据框,其中包含月份(1-12),星期(1-52),星期几(0-6)和小时(0-23)。
下面只是数据集的摘要。每行都是一个事件。
下面的摘录的第一部分显示了使用日期/时间戳为2018-04-01 00:00:00(星期日)捕获的多个事件。下面的代码段的第二部分(在第一个椭圆之后)在接下来的一小时内显示多次出现,而第三部分在下一个小时内出现,依此类推。
month week day_of_week hour
0 4 13 6 0
1 4 13 6 0
2 4 13 6 0
3 4 13 6 0
4 4 13 6 0
...
100 4 13 6 1
101 4 13 6 1
102 4 13 6 1
...
...
300 4 13 6 2
301 4 13 6 2
302 4 13 6 2
...
我希望能够显示此数据集的摘要,其中显示每个小时(0-23)和每个月的每周平均发生次数。
例如:
month hour weekly_ave
4 0 100
4 1 175
4 2 250
...
4 23 500
5 0 90
如何使用pandas groupby和聚合函数来做到这一点?
谢谢!
答案 0 :(得分:0)
df.groupby(['month','hour'])['hour'].count()
然后,如果您需要将此格式更好一点:
df.groupby(['month','hour'])['hour'].count().rename("weekly:ave").reset_index()
答案 1 :(得分:0)
我能够弄清楚。我不得不再做一次groupby
:
df.groupby(['month', 'hour', 'week']) \
.agg({'day_of_week': 'count'}) \
.groupby(['month', 'hour']).mean() \
.rename(columns={"day_of_week": "weekly_ave"}).reset_index()
这给了我我所需要的东西,但是有一种更优雅的方式吗?
谢谢。