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

如何在Pandas中将分组时间范围扩展至00:00:00至23:59:59?

扩展Pandas 5分钟分组的时间范围至全天(00:00:00-23:59:59)

原代码仅会保留包含数据的5分钟区间,要覆盖全天所有5分钟时段,需要先生成当天完整的时间区间序列,再将分组结果与之合并并填充缺失值。以下是修改后的代码:

import pandas as pd

# 原始数据
data = {"datetime" : ["2022-10-26 07:12:13", "2022-10-26 09:14:43", "2022-10-26 17:25:19"], "value" : [1, 3, 5]}
df = pd.DataFrame(data)
df["time"] = pd.to_datetime(df["datetime"])

# 按5分钟分组求和
grouped_df = (
    df.groupby([pd.Grouper(freq="5Min", key="time")])["value"]
    .sum()
    .reset_index(name="value")
)

# 生成当天完整的5分钟时间序列(从00:00到23:55)
date = df["time"].dt.date.iloc[0]
full_time_range = pd.date_range(
    start=f"{date} 00:00:00",
    end=f"{date} 23:55:00",
    freq="5Min"
)
full_df = pd.DataFrame({"interval start": full_time_range})

# 合并分组结果与完整时间序列,缺失值填充为0
df = full_df.merge(grouped_df, left_on="interval start", right_on="time", how="left")
df["value"] = df["value"].fillna(0).astype(int)
df = df.drop(columns="time")

# 添加区间结束时间
df.insert(1, "interval end", df["interval start"] + pd.Timedelta("5Min"))

关键修改说明:

  • 生成完整时间序列:通过pd.date_range创建当天从00:00到23:55的所有5分钟起始时间,确保覆盖全天每一个5分钟区间。
  • 合并与填充:使用左连接将分组结果与完整时间序列合并,没有数据的区间将value填充为0,保证每个时段都有记录。
  • 类型转换:将填充后的value转为整数,保持数据类型一致性。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:46:22