将含重复值的列表转换为指定格式DataFrame并导出到Excel
实现方案
核心思路是先将list2的元素按list1的对应键分组,再将分组后的结构化数据导出为Excel,两种常用实现方式如下:
方法1:使用pandas实现(最简方案)
先安装依赖:pip install pandas openpyxl
完整代码:
import pandas as pd list1 = ['1','2','3','1','2','3','1','2','3'] list2 = ['a','b','c','d','e','f','g','h','i'] # 按list1的键分组存储对应值 grouped = {} for key, val in zip(list1, list2): grouped.setdefault(key, []).append(val) # 转为表格结构导出 df = pd.DataFrame(grouped) df.to_excel("result.xlsx", index=False)
执行后生成的result.xlsx完全符合需求:表头为1、2、3,对应列分别存放匹配的元素。
方法2:无pandas依赖,直接用openpyxl生成
如果不想引入pandas,可直接用Excel操作库实现:
from openpyxl import Workbook list1 = ['1','2','3','1','2','3','1','2','3'] list2 = ['a','b','c','d','e','f','g','h','i'] # 分组逻辑同上 grouped = {} for key, val in zip(list1, list2): grouped.setdefault(key, []).append(val) # 初始化Excel文件 wb = Workbook() ws = wb.active # 写入表头,sorted保证表头顺序为1、2、3 headers = sorted(grouped.keys()) ws.append(headers) # 逐行写入数据 for row_data in zip(*[grouped[h] for h in headers]): ws.append(row_data) wb.save("result.xlsx")
两种方案均支持任意次数的键重复,不需要硬编码匹配规则。
内容的提问来源于stack exchange,提问作者Raspberry Lemon
相关产品推荐
相关产品推荐

