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

如何在Pandas中对Red DataFrame按小时、周、月进行数据聚合?

没问题,我来帮你搞定这个时间维度聚合的需求!咱们一步步来:

第一步:确保时间列是正确格式并设置为索引

首先得确认你的TimeStamp列是datetime类型,并且把它设为DataFrame的索引——这是Pandas处理时间序列聚合的基础。如果还没完成这一步,执行这段代码:

import pandas as pd

# 转换TimeStamp列为datetime类型(如果还没转)
Red['TimeStamp'] = pd.to_datetime(Red['TimeStamp'])
# 将TimeStamp设置为索引
Red = Red.set_index('TimeStamp')

第二步:按不同时间维度聚合求和

Pandas的resample()方法专门用来处理时间序列的频率转换和聚合,非常适合你的需求,直接用它就能轻松实现小时、周、月维度的sum聚合:

1. 按小时聚合

# 按每小时分组,计算Red列的总和
red_hourly_sum = Red['Red'].resample('H').sum()

这里的'H'是Pandas的时间频率代码,代表“小时”,resample会自动把数据按每小时分组,然后对每组的Red值求和。

2. 按周聚合

# 默认每周从周一开始,计算每周的总和
red_weekly_sum = Red['Red'].resample('W').sum()

# 如果你的业务逻辑里一周从周日开始,用这个:
red_weekly_sum_sun_start = Red['Red'].resample('W-SUN').sum()

'W'是默认的周频率(周一为一周起始),'W-SUN'则指定周日作为一周的开始,根据你的需求选择即可。

3. 按月聚合

# 按每月最后一天为节点,计算每月总和
red_monthly_sum = Red['Red'].resample('M').sum()

# 如果需要按每月第一天为起始节点,用这个:
red_monthly_sum_start = Red['Red'].resample('MS').sum()

'M'代表月末频率,'MS'代表月初频率,两种方式可以根据业务场景灵活选择。

备选方案:不修改原索引的聚合方式

如果你不想改变原DataFrame的索引,也可以用groupby结合pd.Grouper来实现:

# 按小时聚合(不修改原索引)
red_hourly_sum = Red.groupby(pd.Grouper(key='TimeStamp', freq='H'))['Red'].sum()

# 按周聚合同理
red_weekly_sum = Red.groupby(pd.Grouper(key='TimeStamp', freq='W'))['Red'].sum()

这样就能完美实现你要的不同时间维度的sum聚合啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 08:23:22