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

如何计算DataFrame中每日00:00:00与23:59:59的数据差值

计算每日00:00:00与23:59:59时刻的数据差值

需求说明

针对连续7天的时间序列数据,计算每日00:00:00和23:59:59两个时刻对应Data列的差值,最终按日期输出结果。

示例数据

Date                         Data
2018-12-01 00:00:00          2
2018-12-01 12:00:00          5
2018-12-01 23:59:59          10
2018-12-02 00:00:00          12
2018-12-02 12:00:00          15
2018-12-02 23:59:59          22

预期输出

Date                        Data
2018-12-01                   8
2018-12-02                   10              

解决方案(Pandas实现)

以下是直接可运行的代码步骤,适配你的需求:

  1. 导入库并格式化时间列
    先确保Date列被识别为datetime类型:

    import pandas as pd
    
    # 构造示例数据(实际场景可替换为pd.read_csv等读取方式)
    data = {
        'Date': ['2018-12-01 00:00:00', '2018-12-01 12:00:00', '2018-12-01 23:59:59',
                 '2018-12-02 00:00:00', '2018-12-02 12:00:00', '2018-12-02 23:59:59'],
        'Data': [2, 5, 10, 12, 15, 22]
    }
    df = pd.DataFrame(data)
    df['Date'] = pd.to_datetime(df['Date'])
    
  2. 筛选目标时刻的记录
    提取仅包含00:00:00和23:59:59的行:

    target_times = ['00:00:00', '23:59:59']
    filtered_df = df[df['Date'].dt.time.astype(str).isin(target_times)]
    
  3. 按日期分组计算差值
    按日期分组后,用当日23:59:59的数据减去00:00:00的数据:

    # 提取纯日期作为分组依据
    filtered_df['date_only'] = filtered_df['Date'].dt.date
    
    # 分组计算差值,默认每组按时间升序排列,取第二个值减第一个值
    result = filtered_df.groupby('date_only')['Data'].apply(lambda x: x.iloc[1] - x.iloc[0]).reset_index()
    
    # 调整列名和格式,匹配预期输出
    result.columns = ['Date', 'Data']
    result['Date'] = pd.to_datetime(result['Date']).dt.strftime('%Y-%m-%d')
    
  4. 查看最终结果
    运行后result即为预期格式:

    print(result)
    

补充说明

  • 若数据中存在某一天缺少目标时刻的情况,可添加判断逻辑(比如检查每组长度是否为2),跳过或标记异常日期。
  • 针对连续7天的需求,只需输入包含这7天目标时刻的DataFrame,代码会自动按日期完成计算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 14:00:34