基于时间条件统计DataFrame中可用员工数量
按小时统计员工可用总数的Pandas解决方案
嘿,这个需求用Pandas处理起来超简单,咱们一步步来搞定:
步骤1:确保时间列是datetime类型
首先得把你的TIME列从字符串转换成Pandas的datetime格式,不然没法提取小时信息:
import pandas as pd # 先构造你的示例DataFrame(如果已经有现成数据就跳过这部分) data = { 'TIME': ['2018-01-01 06:58:53', '2018-01-01 07:00:00', '2018-01-01 07:04:45', '2018-01-01 07:04:55', '2018-01-01 07:21:00'], 'STAFF_AVAIL': [5, 10, 20, 25, 20] } df = pd.DataFrame(data) # 转换时间列类型 df['TIME'] = pd.to_datetime(df['TIME'])
步骤2:按小时分组求和
有两种方式可以实现,选你觉得顺手的就行:
方式1:新增小时列再分组
先提取每个时间点的小时数,再按小时分组统计员工总数:
# 提取小时到新列 df['HOUR'] = df['TIME'].dt.hour # 分组求和并重置索引(让结果更规整) hourly_total = df.groupby('HOUR')['STAFF_AVAIL'].sum().reset_index()
方式2:直接在groupby中提取小时(更简洁)
不想新增列的话,直接在groupby里用dt.hour就行:
hourly_total = df.groupby(df['TIME'].dt.hour)['STAFF_AVAIL'].sum().reset_index(name='TOTAL_STAFF')
最终结果示例
运行完上面的代码后,你会得到这样的结果:
HOUR STAFF_AVAIL 0 6 5 1 7 75
(对应示例数据里,6点只有1条记录5人,7点的10+20+25+20=75人)
如果你的数据跨了多天,这个方法也依然有效,因为它只提取时间的小时部分,不管是哪一天的6点都会被归到一组哦~
内容的提问来源于stack exchange,提问作者Mus
相关产品推荐
相关产品推荐

