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

如何用Pandas将非完整时间序列转换为固定间隔完整序列

非完整时间序列转固定间隔序列的实现思路
  • 第一步:明确核心规则
    先确定两个关键规则:

    • 目标固定时间间隔(比如每日、每周,根据业务需求选择)
    • 原数据中重复时间戳的处理逻辑(示例里的累计净利润,建议保留同一时间戳的最后一条记录,因为通常是后续更新值;其他场景可按需选择求和/平均)
  • 第二步:预处理原数据
    针对你提供的示例,先对重复时间戳做去重处理,按时间戳分组后保留每组最后一条,得到干净的关键时间戳数据:

    Date/Time,Cmltv Net Profit
    2013-05-28 00:00:00,-14000.0
    2013-05-30 00:00:00,-24200.0
    2013-06-07 00:00:00,-11200.0
    2013-06-24 00:00:00,-13800.0
    
  • 第三步:生成完整时间序列
    以原数据的最早时间(2013-05-28)和最晚时间(2013-06-24)为起止,按设定的固定间隔生成完整的时间戳列表。比如选每日间隔,就生成该时间段内的所有日期。

  • 第四步:对齐填充缺失值
    将预处理后的原数据与完整时间序列对齐,原数据存在的时间戳保留原值,缺失的时间戳按业务逻辑填充:

    • 累计净利润这类数据优先用前向填充(缺失日期沿用前一个有记录的数值,因为没有新更新时累计值不会变化)
    • 特殊场景可选择后向填充或固定值填充
  • 工具实现示例(Python Pandas)
    用代码快速完成上述流程:

    import pandas as pd
    
    # 读取数据并解析时间戳
    df = pd.read_csv('data.csv', parse_dates=['Date/Time'], index_col='Date/Time')
    # 去重:同一时间戳保留最后一条记录
    df = df.groupby(df.index).last()
    # 生成每日完整时间序列
    full_time_index = pd.date_range(start=df.index.min(), end=df.index.max(), freq='D')
    # 对齐数据并前向填充缺失值
    full_series = df.reindex(full_time_index).ffill()
    # 转换为原始格式输出
    print(full_series.reset_index().rename(columns={'index': 'Date/Time'}))
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.26 09:27:26