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

如何将时间戳行的时间部分转列,生成每日时段能耗宽表

能耗30分钟间隔数据转宽表解决方案

下面给出三种常用工具的实现方式:

Python(Pandas)实现

适合数据量较大、需要自动化处理的场景

import pandas as pd

# 1. 读取原始数据,自动解析时间列
df = pd.read_csv("你的数据文件路径.csv", parse_dates=["Timestamp"])

# 2. 拆分出日期和时段列
df["date"] = df["Timestamp"].dt.date
# 时段格式统一为HH:MM
df["time_slot"] = df["Timestamp"].dt.strftime("%H:%M")

# 3. 透视生成宽表
wide_df = df.pivot(
    index="date",
    columns="time_slot",
    values="Energy_KWh"
).reset_index()

# 可选:补全全天48个时段(避免某时段无数据导致列缺失)
full_time_slots = [f"{hour:02d}:{minute:02d}" for hour in range(24) for minute in (0, 30)]
wide_df = wide_df.reindex(columns=["date"] + full_time_slots)

# 4. 导出结果
wide_df.to_csv("宽表结果.csv", index=False)

注:如果需要填充缺失时段的空值,可以加一行wide_df = wide_df.fillna(0),把空值替换为0或者其他你需要的默认值

SQL实现

适合数据存储在关系型数据库的场景,以MySQL为例:

SELECT 
    DATE(`Timestamp`) AS `date`,
    SUM(CASE WHEN TIME(`Timestamp`) = '00:00:00' THEN Energy_KWh END) AS `00:00`,
    SUM(CASE WHEN TIME(`Timestamp`) = '00:30:00' THEN Energy_KWh END) AS `00:30`,
    -- 按上述规则依次补充剩下的46个时段,直到23:30为止
    SUM(CASE WHEN TIME(`Timestamp`) = '23:30:00' THEN Energy_KWh END) AS `23:30`
FROM 你的能耗表名
GROUP BY DATE(`Timestamp`)
ORDER BY `date` ASC;

注:如果你用的是支持PIVOT语法的数据库(PostgreSQL、BigQuery、SQL Server等),可以直接调用PIVOT方法,不需要手写48行CASE WHEN语句

Excel实现

适合小数据量、快速处理的场景

  • 新增两个辅助列:
    • 日期列:公式为=INT(A2)(A列为Timestamp所在列,设置单元格格式为日期格式)
    • 时段列:公式为=TEXT(A2,"hh:mm")
  • 选中全部数据,插入「数据透视表」
  • 透视表配置:行区域放「日期」字段,列区域放「时段」字段,值区域放「Energy_KWh」字段,值汇总方式选择「求和」
  • 可选补全缺失时段:右键列标签→字段设置→布局和打印→勾选「显示无数据的项目」

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 09:39:03