如何用Python为CSV表头字段添加子表头(拆分工单创建字段)
解决CSV字段拆分为子字段的问题
用原生csv模块实现
你需要修改表头结构,把原来的Tickets Created替换成四个子字段,同时调整数据行的内容,对应每个子字段的数值。假设你已经能获取到每个级别(Low/Medium/High/Critical)的工单数量,按下面的方式修改代码:
修改后的完整代码
import csv # 替换表头,拆分Tickets Created为四个子字段 header = ["Triage","Total Alert","Investigated","False Positives","Low","Medium","High","Critical"] output_file = open('test.csv','w',newline='') writer = csv.writer(output_file) writer.writerow(header) # 假设你在循环中获取数据,这里模拟循环场景 for item in your_data_source: # your_data_source是你的原始数据集合 index = item['index'] total_count = item['total'] ia_count = item['investigated'] fp_count = item['false_positives'] # 获取四个级别的工单数量 low_tkt = item['low_tickets'] medium_tkt = item['medium_tickets'] high_tkt = item['high_tickets'] critical_tkt = item['critical_tickets'] # 构造对应表头的数据行 data = [index, total_count, ia_count, fp_count, low_tkt, medium_tkt, high_tkt, critical_tkt] writer.writerow(data) output_file.close()
用Pandas实现(解决你之前尝试未成功的问题)
如果用Pandas,核心是构造包含所有字段的DataFrame,再导出为CSV。这里给出明确的实现步骤:
示例代码
import pandas as pd # 假设你的数据存储在一个列表中,每个元素是包含所有字段的字典 data_list = [] for item in your_data_source: data_dict = { "Triage": item['index'], "Total Alert": item['total'], "Investigated": item['investigated'], "False Positives": item['false_positives'], "Low": item['low_tickets'], "Medium": item['medium_tickets'], "High": item['high_tickets'], "Critical": item['critical_tickets'] } data_list.append(data_dict) # 转为DataFrame并导出CSV df = pd.DataFrame(data_list) df.to_csv('test.csv', index=False)
关键说明
- 不管用哪种方法,你需要确保能获取到每个级别工单的具体数量,而不是原来的汇总值
tkt_count。如果之前只有汇总值,需要先从原始数据中统计出四个级别的数量。 - 用Pandas时,
index=False是为了避免导出时自动添加索引列,和你原来的输出格式保持一致。
内容的提问来源于stack exchange,提问作者Salman Ali
相关产品推荐
相关产品推荐

