You need to enable JavaScript to run this app. 如何将pandas时序DataFrame按15分钟间隔聚合数据
优惠活动
大模型
产品
解决方案
定价
更多

如何将pandas时序DataFrame按15分钟间隔聚合数据

按15分钟间隔聚合DataFrame的实现方案

核心前提校验

首先需要确认你的DataFrame行索引为Pandas可识别的datetime类型,否则后续的时间分组会直接报错,执行一行代码即可完成格式校验与转换:
df.index = pd.to_datetime(df.index)

实现逻辑

针对时间间隔的分组聚合,Pandas内置的resample(时间重采样)方法是比手动拼接groupby逻辑更稳定、更适配时间序列场景的实现,天然支持自动补全缺失的时间区间、按固定粒度分箱等能力。
如果你的核心需求是按15分钟为一个统计单元,不需要手动拆分时间戳再套groupby,直接通过分箱规则+列级聚合映射即可完成。

完整可运行代码

import pandas as pd

# 按列配置差异化聚合规则,适配不同字段的统计需求
agg_config = {
    # 标识类字段:取每个15分钟组内的首个非空值
    'id': 'first',
    'user_id': 'first',
    # 情绪维度数值:取15分钟窗口内的平均值
    'sentiment': 'mean',
    'magnitude': 'mean',
    'angry': 'mean',
    'disgusted': 'mean',
    'fearful': 'mean',
    'happy': 'mean',
    'neutral': 'mean',
    'sad': 'mean',
    'surprised': 'mean',
    # 生理指标:根据业务需求调整聚合逻辑
    'heartRate': 'mean', # 心率取窗口内平均
    'steps': 'sum' # 步数取窗口内累计值
}

# 按15分钟粒度执行聚合
df_15min = df.resample(
    rule='15min', # 指定分箱粒度为15分钟
    label='left', # 用每个时间箱的左边界作为行索引
    closed='left' # 时间箱为左闭右开区间,符合常规统计逻辑
).agg(agg_config)

常见适配说明

  • 上述代码会自动将零散时间点划入对应15分钟窗口:比如样本中2020-10-04 14:06:00、2020-10-04 14:06:05两个记录会被划入14:00-14:15的窗口,行索引标记为2020-10-04 14:00
  • 如果一定要用groupby语法实现,和上述resample逻辑等价的写法为:
df_15min = df.groupby(df.index.floor('15min')).agg(agg_config)
  • 如果你的分析需要把时间箱的右边界作为索引(比如14:00-14:15的窗口标记为14:15),只需要把label='right'、closed='right'即可
  • 所有列为NaN的空窗口,resample会自动生成对应行,不需要手动补全时间序列缺口,更适合后续跨数据集的对齐分析

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 20:36:04