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

如何将pandas时间序列数据按规则汇总分配到15分钟时间槽

实现步骤及代码

核心逻辑:按照规则不需要拆分跨时间槽的区间,所有记录的mw_values全额归属begin时间所在的15分钟槽,只需给每条记录打槽位标签后分组求和,再补全空槽即可。

步骤1:导入依赖并处理基础数据

import pandas as pd

# 构造示例数据,实际使用时替换为你自己的DataFrame即可
data = {
    "begin": ["2021-09-14 11:16:00", "2021-09-14 11:27:11", "2021-09-14 11:30:00", "2021-09-14 11:33:59", "2021-09-14 11:39:42"],
    "end": ["2021-09-14 11:27:11", "2021-09-14 11:30:00", "2021-09-14 11:33:59", "2021-09-14 11:39:42", "2021-09-14 11:59:59"],
    "mw_values": [0, 100, 1200, 600, 400]
}
df = pd.DataFrame(data)
# 把begin列转为pandas datetime类型
df["begin"] = pd.to_datetime(df["begin"])

步骤2:生成每条记录归属的15分钟槽位标签

使用pandas内置的dt.floor方法可以直接对时间向下取整到15分钟粒度,刚好匹配规则要求的槽位归属逻辑:

df["time_slots_15_min"] = df["begin"].dt.floor("15T")

步骤3:按槽位分组求和

sum_df = df.groupby("time_slots_15_min", as_index=False)["mw_values"].sum().rename(columns={"mw_values": "sum_mw_values"})

步骤4:补全无数据的空槽位(可选,按需使用)

如果需要输出连续的15分钟槽位、无数据的槽位填0,可以执行以下代码:

# 生成完整的时间槽序列,start和end可以根据你实际需要的统计范围自定义调整
full_slots = pd.date_range(
    start=sum_df["time_slots_15_min"].min().floor("H"),
    end=sum_df["time_slots_15_min"].max().ceil("H"),
    freq="15T"
).to_frame(name="time_slots_15_min", index=False)

# 合并补全空值
result = pd.merge(full_slots, sum_df, on="time_slots_15_min", how="left").fillna(0)
result["sum_mw_values"] = result["sum_mw_values"].astype(int)

运行后输出的result和你提供的示例结果完全一致。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 06:15:10