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

CSV格式转换需求:将小时级多行数据转为单行多列结构

水电站CSV数据格式转换方案

核心思路

每4行对应1小时数据,需将这4行中的CTime、三台发电机功率、水位数据提取合并为单条记录。

具体实现步骤(以Python为例)

  • 读取原始CSV文件,按每4行作为一组划分数据块
  • 从每组的对应行中提取CTime、TURBINEG1、TURBINEG2、TURBINEG3、WATERLEVEL字段值
  • 将合并后的单条记录写入新CSV文件

示例代码

import csv

# 打开原始文件与目标文件
with open("原始数据.csv", "r", encoding="utf-8") as in_file, open("转换后数据.csv", "w", newline="", encoding="utf-8") as out_file:
    reader = csv.reader(in_file)
    writer = csv.writer(out_file)
    
    # 写入目标文件表头
    writer.writerow(["CTime", "TURBINEG1", "TURBINEG2", "TURBINEG3", "WATERLEVEL"])
    
    # 循环处理每4行数据
    while True:
        group = []
        # 读取当前小时的4行数据
        for _ in range(4):
            try:
                group.append(next(reader))
            except StopIteration:
                # 处理文件末尾不足4行的情况
                if not group:
                    break
                print("警告:最后一组数据不完整,已跳过")
                break
        if not group:
            break
        
        # 提取字段(需根据你的原始CSV实际列位置调整索引)
        ctime = group[0][0]
        turb1 = group[0][1]
        turb2 = group[1][1]
        turb3 = group[2][1]
        water_level = group[3][1]
        
        # 写入合并后的记录
        writer.writerow([ctime, turb1, turb2, turb3, water_level])

关键注意点

  • 代码中的字段索引必须匹配你的原始CSV实际列位置,比如如果TURBINEG1在第一行第三列,需将turb1 = group[0][1]改为turb1 = group[0][2]
  • 若原始CSV存在表头行,需先调用next(reader)跳过表头再开始分组处理

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.30 14:46:01