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

如何按用户分组将带时间戳的数据转换为10分钟粒度时间序列

按用户拆分的10分钟粒度时间序列转换方案

核心思路

按用户ID分组,为每个用户单独生成覆盖其所有数据时间范围的10分钟间隔时间序列,再将原数据与该序列对齐,缺失值填充为NaN,最后按用户ID顺序拼接结果。

代码实现(基于Pandas)

import pandas as pd

# 构造示例数据(实际使用时可替换为pd.read_csv读取文件)
df = pd.DataFrame({
    'timestamp': ['2020-01-01 10:00', '2020-01-01 10:04', '2020-01-01 20:02', '2020-01-01 21:20', '2020-01-15 23:12'],
    'uid': [1, 2, 2, 1, 1],
    'var': [10, 20, 15, 10, 5]
})

# 转换时间列为datetime类型
df['timestamp'] = pd.to_datetime(df['timestamp'])

# 定义单个用户数据的重采样函数
def process_user_group(group):
    # 获取该用户时间范围的10分钟对齐起止点
    start = group['timestamp'].min().floor('10min')
    end = group['timestamp'].max().floor('10min')
    # 生成10分钟间隔的时间序列
    time_seq = pd.date_range(start=start, end=end, freq='10min')
    # 将原数据时间向下取整到10分钟,用于匹配
    group['aligned_time'] = group['timestamp'].dt.floor('10min')
    # 合并生成的时间序列与原数据,填充缺失值
    resampled_df = pd.DataFrame({
        'timestamp': time_seq,
        'uid': group['uid'].iloc[0]
    }).merge(
        group[['aligned_time', 'var']],
        left_on='timestamp',
        right_on='aligned_time',
        how='left'
    ).drop('aligned_time', axis=1)
    return resampled_df

# 按uid分组处理,按uid升序拼接结果
final_result = df.groupby('uid', sort=True).apply(process_user_group).reset_index(drop=True)

# 查看结果示例
print(final_result.head(10))

代码说明

  1. 时间类型转换:确保timestamp列是datetime格式,这是时间序列处理的基础
  2. 分组处理:通过groupby('uid', sort=True)保证按用户ID顺序处理
  3. 时间序列生成:用pd.date_range生成每个用户专属的10分钟间隔时间轴,起止点取该用户最早/最晚数据的10分钟对齐点
  4. 数据对齐:将原数据时间向下取整后与生成的时间轴合并,未匹配到的var自动填充为NaN

输出示例

timestamp  uid   var
0 2020-01-01 10:00:00    1  10.0
1 2020-01-01 10:10:00    1   NaN
2 2020-01-01 10:20:00    1   NaN
3 2020-01-01 10:30:00    1   NaN
4 2020-01-01 10:40:00    1   NaN
5 2020-01-01 10:50:00    1   NaN
6 2020-01-01 11:00:00    1   NaN
7 2020-01-01 11:10:00    1   NaN
8 2020-01-01 11:20:00    1   NaN
9 2020-01-01 11:30:00    1   NaN
...
1727 2020-01-15 23:10:00    1   5.0
1728 2020-01-01 10:00:00    2  20.0
1729 2020-01-01 10:10:00    2   NaN
...

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:15:50