如何在Pandas中按非00:00起始的DateTime进行值的聚合(求和)
Pandas自定义时间区间(5:00-次日4:00)的聚合求和方法
核心思路是通过调整时间戳偏移,把自定义的日区间映射到自然日,再按自然日分组求和:
确保
DateTime列为datetime类型df['DateTime'] = pd.to_datetime(df['DateTime'])将所有时间戳减去5小时,这样原区间
当日5:00 - 次日4:00内的时间,会被统一映射到当日自然日:df['adjusted_date'] = df['DateTime'] - pd.Timedelta(hours=5)对应示例中的时间映射:
2023-07-01 05:00:00减5小时后日期为2023-07-012023-07-02 04:00:00减5小时后日期仍为2023-07-012023-07-02 05:00:00减5小时后日期为2023-07-02
按调整后的日期分组求和
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
相关产品推荐
相关产品推荐

