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
相关产品推荐
相关产品推荐

