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

如何在Pandas中按非00:00起始的DateTime进行值的聚合(求和)

Pandas自定义时间区间(5:00-次日4:00)的聚合求和方法

核心思路是通过调整时间戳偏移,把自定义的日区间映射到自然日,再按自然日分组求和:

  1. 确保DateTime列为datetime类型

    df['DateTime'] = pd.to_datetime(df['DateTime'])
    
  2. 将所有时间戳减去5小时,这样原区间当日5:00 - 次日4:00内的时间,会被统一映射到当日自然日:

    df['adjusted_date'] = df['DateTime'] - pd.Timedelta(hours=5)
    

    对应示例中的时间映射:

    • 2023-07-01 05:00:00 减5小时后日期为2023-07-01
    • 2023-07-02 04:00:00 减5小时后日期仍为2023-07-01
    • 2023-07-02 05:00:00 减5小时后日期为2023-07-02
  3. 按调整后的日期分组求和

    result = df.groupby(df['adjusted_date'].dt.date)['Values'].sum()
    

完整示例代码

import pandas as pd

# 构造测试数据
data = {
    'DateTime': [
        '2023-07-01 05:00:00',
        '2023-07-01 06:00:00',
        '2023-07-02 04:00:00',
        '2023-07-02 05:00:00',
        '2023-07-02 06:00:00'
    ],
    'Values': [10, 10, 10, 10, 10]
}
df = pd.DataFrame(data)

# 转换时间格式
df['DateTime'] = pd.to_datetime(df['DateTime'])

# 偏移时间戳
df['adjusted_date'] = df['DateTime'] - pd.Timedelta(hours=5)

# 分组求和
agg_result = df.groupby(df['adjusted_date'].dt.date)['Values'].sum()
print(agg_result)

输出结果

2023-07-01    30
2023-07-02    20
Name: Values, dtype: int64

(注:示例仅包含5条数据,若为完整24小时数据,2023-07-01的求和结果为240,与需求一致)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 16:23:23