Python中如何简洁将Counter对象转换为指定格式CSV文件?
Python 将 Counter 对象转换为指定结构 CSV 的实现方法
你已经拿到了键为(时间, 进程)元组、值为计数的Counter对象,按以下步骤实现即可:
实现步骤
- 第一步:从Counter中提取所有唯一的时间标签、唯一的进程名称,分别去重排序保证输出顺序稳定
- 第二步:遍历每个时间,对每个进程查询对应的计数值,不存在则默认补0
- 第三步:按CSV格式输出表头和每行数据,可选择直接打印或写入本地文件
完整代码示例
from collections import Counter import csv # 你已统计得到的Counter对象 count_data = Counter({('Time1', 'Process1'): 1, ('Time2', 'Process2'): 2, ('Time2', 'Process1'): 1}) # 提取所有唯一时间、唯一进程并排序 times = sorted({key[0] for key in count_data.keys()}) processes = sorted({key[1] for key in count_data.keys()}) # 方案1:写入本地CSV文件 output_path = "process_count.csv" with open(output_path, 'w', newline='', encoding='utf-8') as f: # 用制表符分隔,和你示例的格式对齐,需要逗号分隔的话删掉delimiter参数即可 writer = csv.writer(f, delimiter='\t') # 写入表头 writer.writerow(['Time'] + processes) # 逐行写入每个时间的统计值 for time_val in times: row = [time_val] for proc in processes: row.append(count_data.get((time_val, proc), 0)) writer.writerow(row) # 方案2:直接在控制台打印输出结果 print('\t'.join(['Time'] + processes)) for time_val in times: row = [time_val] + [str(count_data.get((time_val, proc), 0)) for proc in processes] print('\t'.join(row))
输出效果
运行后得到的内容和你要求的格式完全一致:
Time Process1 Process2 Time1 1 0 Time2 1 2
内容的提问来源于stack exchange,提问作者Jadu
相关产品推荐
相关产品推荐

