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

如何用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:55:22