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

Dask DataFrame如何基于时间戳按小时聚合计算各数值列均值

实现方法

Dask的日期时间groupby完全支持指定自定义聚合时间间隔,和pandas的时间聚合用法高度兼容,以下是具体实现步骤:

前置准备

首先确保你的日期时间列已经是datetime类型,若未转换可以先执行类型转换:

import dask.dataframe as dd
# 替换为你实际的时间列名
ddf['datetime_col'] = dd.to_datetime(ddf['datetime_col'])

两种聚合实现方式

方法1:使用dd.Grouper指定聚合频率(最推荐)

直接在groupby中通过Grouper指定时间间隔,无需额外生成中间列,灵活性最高:

# freq='H'代表按小时聚合,可替换为其他时间频率,比如'30T'为30分钟、'2H'为2小时
hourly_avg = ddf.groupby(dd.Grouper(key='datetime_col', freq='H')).mean(numeric_only=True)

方法2:使用时间对齐函数dt.floor

将时间列对齐到小时级别后,再按对齐后的时间列分组聚合:

# 直接在groupby中对齐时间,不需要新增中间列
hourly_avg = ddf.groupby(ddf['datetime_col'].dt.floor('H')).mean(numeric_only=True)

常见优化点

  • 如果你的Dask DataFrame已经按照时间列排序且分区有序,时间聚合的执行效率会更高,Dask对有序分区的时间操作有专门优化
  • numeric_only=True参数可以过滤非数值列,避免对时间列、字符串列做无效计算,减少报错概率
  • 聚合完成后调用hourly_avg.compute()即可拿到最终的pandas DataFrame格式结果
补充说明

针对日期时间的groupby操作完全支持指定自定义聚合时间间隔,支持所有pandas兼容的时间频率字符串,完全可以满足不同粒度的时间聚合需求。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 10:24:04