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

如何在Python中实现动态时间间隔(如20分钟)的数据聚合

解决方案:用Pandas实现时间间隔聚合与宽表转换

针对你的需求,我们可以用Pandas完成从时间分组聚合到宽表转换的完整流程,以下是可直接运行的代码示例,适配10/20/30分钟的动态时间间隔:

步骤1:数据准备与预处理

首先加载数据并将TimeStamp转换为datetime类型,这是时间聚合的前提:

import pandas as pd
import numpy as np

# 加载原始数据
data = pd.DataFrame({
    'TimeStamp': ['2022-01-01 00:00:02.969', '2022-01-01 00:00:04.467', 
                  '2022-01-01 00:00:05.965', '2022-01-01 00:00:08.962', 
                  '2022-01-01 00:00:10.461'],
    'Name': ['Chris', 'Chris', 'Mark', 'Cuban', 'Cuban'],
    'Marks': [70, 75, 80, 60, 58],
    'Subject': ['DK', 'DK', 'DK', 'DK', 'DK']
})

# 将TimeStamp转为datetime类型
data['TimeStamp'] = pd.to_datetime(data['TimeStamp'])

步骤2:按时间间隔分组聚合

使用pd.Grouper指定时间间隔(freq参数:10分钟用'10T',20分钟用'20T',30分钟用'30T'),同时按Subject和Name分组,计算Min、Max、STD:

# 定义时间间隔,可动态调整
time_interval = '20T'  # 替换为'10T'或'30T'即可

# 分组聚合
aggregated = data.groupby([
    pd.Grouper(key='TimeStamp', freq=time_interval, label='left'),  # 取区间左边界作为时间戳
    'Subject',
    'Name'
])['Marks'].agg([
    ('Min', 'min'),
    ('Max', 'max'),
    ('STD', lambda x: x.std() if len(x)>=2 else np.nan)  # 样本量小于2时STD设为NaN
]).reset_index()

注:用label='left'确保时间戳显示为每个区间的起始时间(如2022-01-01 00:00:00.000),STD计算时判断样本量是避免单数据点无标准差的情况。

步骤3:转换为宽表格式

用pivot将长表转为你需要的宽表,并重命名列名:

# 转宽表
wide_table = aggregated.pivot(
    index=['TimeStamp', 'Subject'],
    columns='Name',
    values=['Min', 'Max', 'STD']
)

# 调整列名格式为"Name_Stat"
wide_table.columns = [f'{name}_{stat}' for stat, name in wide_table.columns]

# 重置索引并格式化时间戳到毫秒
wide_table = wide_table.reset_index()
wide_table['TimeStamp'] = wide_table['TimeStamp'].dt.strftime('%Y-%m-%d %H:%M:%S.%f')[:-3]  # 保留三位毫秒

# 填充空值为空白(可选,根据需求调整)
wide_table = wide_table.fillna('')

最终输出结果

运行上述代码后,针对你的示例数据,输出的宽表如下:

TimeStampSubjectChris_MinChris_MaxChris_STDCuban_MinCuban_MaxCuban_STDMark_MinMark_MaxMark_STD
2022-01-01 00:00:00.000DK70753.535558601.41428080

如果后续有其他时间区间的数据,代码会自动按设定的时间间隔生成对应的行。

内容的提问来源于stack exchange,提问作者Divyansh Kumar Singh

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 02:36:23