You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于时间条件统计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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 11:14:30