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

如何使用Pandas按小时聚合数据并显示对应日期而非索引?

Pandas按小时聚合并保留完整日期时间索引的解决方案

你现在的问题核心是:用data.index.hour分组时只提取了小时数值,导致丢失了日期上下文。其实Pandas有两种非常简便的方式可以实现你想要的「保留完整小时级日期时间作为索引」的需求:

方法一:使用resample(时间序列聚合首选)

resample是Pandas专门为时间序列数据打造的聚合工具,直接指定'H'(小时)作为频率,就能自动按小时分组,同时保留完整的日期时间索引:

import pandas as pd
import numpy as np

dates = pd.date_range('1/1/2011', periods=20, freq='25min')
data = pd.Series(np.random.randint(100, size=20), index=dates)

# 按小时重采样并求和
result = data.resample('H').sum().reset_index(name='Sum')
print(result)

执行后输出的index列就是每个小时的起始完整日期时间(例如2011-01-01 00:00:00、2011-01-01 01:00:00),完全匹配你的期望输出。

方法二:使用groupby配合floor('H')

如果你更习惯用groupby语法,可以将时间索引向下取整到小时级别,以此作为分组键,这样聚合后就能得到带完整日期的小时索引:

# 按向下取整到小时的索引分组求和
result = data.groupby(data.index.floor('H')).sum().reset_index(name='Sum')
print(result)

这里的floor('H')会把每个时间戳调整到当前小时的起始时刻(比如2011-01-01 00:25:00会被转换为2011-01-01 00:00:00),以此作为分组依据,完美保留了日期信息。

两种方法的小区别

  • resample更适合规则频率的时间聚合,语法更简洁直观,是时间序列聚合的首选;
  • groupby + floor灵活性更高,如果后续需要自定义时间截断规则(比如按30分钟、按每天的特定时段),这种方式更容易扩展。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.29 08:52:25