[英]Need help to groupby day and count elements within a specified range
所以我的数据现在看起来像这样:
DTA_ADM HOUR_AD
NUM_S
461871 07/18/2020 52973
477090 09/23/2020 34328
2043366 10/07/2020 49953
2043366 10/24/2020 48190
1627234 07/29/2020 72266
... ... ...
421338 09/15/2020 70392
424569 05/19/2020 42863
427780 07/03/2020 44645
427780 09/05/2020 70800
2180672 09/03/2020 74661
我想计算每天在 HOUR_ADM 列(例如 28000-50400 和 50400-86400 之间)中特定范围内的数字的 ocorrence。
像这样的东西:
DTA_ADM INT_1 INT_2
05/01/2020 34 67
05/02/2020 59 70
05/03/2020 70 49
05/04/2020 43 35
05/05/2020 50 50
... ... ...
11/26/2020 89 65
11/27/2020 65 49
11/28/2020 64 80
11/29/2020 79 90
11/30/2020 43 65
有什么建议么?
使用pd.cut
:
rng = [28000,50400,86400]
df.groupby(pd.cut(df.HOUR_AD, bins=rng)).count()
最终解决方案如下所示:
df.groupby([df.DTA_ADM, pd.cut(df.HOUR_AD, bins=rng, labels=[f"INT_{i+1}" for i in range(len(rng)-1)])])['HOUR_AD'].agg('count').unstack()
HOUR_AD | INT_1 | INT_2 |
---|---|---|
DTA_ADM | ||
2020-05-19 | 1 | 0 |
2020-07-03 | 1 | 0 |
2020-07-18 | 0 | 1 |
2020-07-29 | 0 | 1 |
2020-09-03 | 0 | 1 |
2020-09-05 | 0 | 1 |
2020-09-15 | 0 | 1 |
2020-09-23 | 1 | 0 |
2020-10-07 | 1 | 0 |
2020-10-24 | 1 | 0 |
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.