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

如何按指定工作日分组,拆分工作日与周末并计算各小时均值?

实现方法

核心思路是利用Pandas datetime类型自带的星期属性,拆分工作日/周末数据后分别按小时聚合统计,具体实现如下:

前置说明

Pandas中datetime类型的weekday/dayofweek属性规则:返回值0对应周一、1对应周二...4对应周五、5对应周六、6对应周日,直接用该字段做筛选条件即可。


代码实现

情况1:datetime已经设为DataFrame索引(适配你现有写法)

import pandas as pd
import numpy as np

# 拆分工作日(周一至周五)、周末子集
weekday_df = df[df.index.weekday < 5]
weekend_df = df[df.index.weekday >= 5]

# 分别按小时计算均值、标准差,和你原有写法逻辑完全兼容
weekday_hourly_stats = weekday_df.groupby(lambda idx: idx.hour).agg([np.mean, np.std])
weekend_hourly_stats = weekend_df.groupby(lambda idx: idx.hour).agg([np.mean, np.std])

情况2:datetime是普通列,未设为索引

import pandas as pd
import numpy as np

# 先把datetime列转为标准时间类型,带时区的数据也支持
df['datetime'] = pd.to_datetime(df['datetime'])

# 提取星期、小时字段
df['weekday_flag'] = df['datetime'].dt.weekday
df['hour'] = df['datetime'].dt.hour

# 分别统计
weekday_hourly_stats = df[df['weekday_flag'] < 5].groupby('hour')['value'].agg([np.mean, np.std])
weekend_hourly_stats = df[df['weekday_flag'] >= 5].groupby('hour')['value'].agg([np.mean, np.std])

最终得到的weekday_hourly_stats就是工作日各小时的统计结果,weekend_hourly_stats是周末各小时的统计结果,结构和你之前得到的全时段统计结果完全一致。

内容的提问来源于stack exchange,提问作者user16511234

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 21:24:04