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

如何为df补充缺失的10分钟间隔时间戳数据行?

实现建议

核心思路

先将日期与时间合并为完整时间戳,生成符合10分钟间隔的完整时间序列,通过重新索引补全缺失行,最后按需填充测量值。

具体步骤(基于Python Pandas)

假设你的DataFrame名为df,按以下操作执行:

  1. 合并日期与时间,转换为时间戳类型
    将分散的日期和时间整合成可处理的datetime对象:

    import pandas as pd
    
    # 合并日期与时间列,转为datetime格式
    df['datetime'] = pd.to_datetime(df['日期'].astype(str) + ' ' + df['Time'])
    # 将datetime设为索引,方便后续时间序列操作
    df = df.set_index('datetime')
    
  2. 生成完整的10分钟间隔序列并补全缺失行
    按传感器分组(支持多传感器场景),为每个传感器生成连续的10分钟时间序列,再补全对应行:

    filled_dfs = []
    # 按传感器分组处理
    for sensor, group in df.groupby('Sensor'):
        # 生成从该传感器最早到最晚时间的10分钟间隔序列
        full_time_range = pd.date_range(start=group.index.min(), end=group.index.max(), freq='10T')
        # 重新索引,补全缺失的时间点
        filled_group = group.reindex(full_time_range)
        # 填充Sensor和日期列(同一传感器同一日期下无变化)
        filled_group['Sensor'] = sensor
        filled_group['日期'] = group['日期'].iloc[0]
        filled_dfs.append(filled_group)
    
    # 合并所有分组结果
    filled_df = pd.concat(filled_dfs)
    
  3. 填充缺失的测量值
    根据业务需求选择填充方式,示例中采用线性插值(适合连续变化的数值):

    # 线性插值填充测量值
    filled_df['测量值'] = filled_df['测量值'].interpolate(method='linear')
    # 若需前向填充(用前一个有效值填充),可替换为:
    # filled_df['测量值'] = filled_df['测量值'].ffill()
    
  4. 恢复原始列结构并生成行号
    拆分时间列为原始格式,重新生成行号:

    # 从datetime索引提取时间字符串
    filled_df['Time'] = filled_df.index.strftime('%H:%M:%S')
    # 重置索引并生成行号
    filled_df = filled_df.reset_index(drop=True).reset_index(names='行号')
    # 调整列顺序与原始结构一致
    filled_df = filled_df[['行号', 'Sensor', '日期', 'Time', '测量值']]
    # 行号从1开始对齐示例格式
    filled_df['行号'] = filled_df['行号'] + 1
    

补充说明

  • 若日期列是标准日期格式(而非示例中的数字1),只需调整合并datetime的逻辑,无需额外转换字符串。
  • 填充方式可灵活调整:比如用固定值填充缺失的测量值,可替换为filled_df['测量值'] = filled_df['测量值'].fillna(0)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:01:12