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

如何按周内每日的小时维度对Pandas DataFrame进行分组统计?

实现方案

首先需要确保你的datetime列已转换为pandas datetime格式,如果你之前还没有将该列设置为索引,可先执行预处理代码:

import pandas as pd
import numpy as np

# 转换时间格式并设置为索引
df['datetime'] = pd.to_datetime(df['datetime'])
df = df.set_index('datetime')

核心分组统计代码

直接按「工作日+小时」两个维度分组即可,pandas的DatetimeIndex内置weekday属性(取值范围0-6,对应周一到周日)和hour属性:

weekday_hourly_stats = df.groupby([df.index.weekday, df.index.hour]).agg([np.mean, np.std])

如果你不想把datetime列设为索引,也可以直接用列的dt属性实现分组:

# 无需设置索引的写法
df['datetime'] = pd.to_datetime(df['datetime'])
weekday_hourly_stats = df.groupby([
    df['datetime'].dt.weekday, 
    df['datetime'].dt.hour
])['value'].agg([np.mean, np.std])

可选优化:替换工作日显示为中文

默认的0-6数字可读性较差,可通过映射替换为中文星期名称:

weekday_map = {0:'周一', 1:'周二', 2:'周三', 3:'周四', 4:'周五', 5:'周六', 6:'周日'}
weekday_hourly_stats = weekday_hourly_stats.rename(index=weekday_map, level=0)
# 给索引重命名更便于后续使用
weekday_hourly_stats.index = weekday_hourly_stats.index.set_names(['工作日', '小时'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 17:00:04