遍历目录CSV文件存入单个Excel不同工作表的代码问题排查
问题修复说明
错误原因
df_list初始化位置错误,放在了CSV遍历循环内部,每轮循环都会清空已存储的DataFrame- 嵌套的枚举循环每次从0开始计数,生成的工作表名重复为
Sheet1,后续写入会直接覆盖已有工作表,最终仅保留最后一个CSV的处理结果
优化后可运行代码
from pathlib import Path import pandas as pd dir_b = r'/Desktop/MyProjects' # 用with上下文管理器管理ExcelWriter对象,自动执行保存,无需手动调用save() with pd.ExcelWriter('Compiled File.xlsx') as writer: # 直接枚举遍历所有CSV文件,start参数指定起始序号,不用额外维护计数器 for idx, csv in enumerate(Path(dir_b).glob('*.csv'), start=1): df = pd.read_csv(csv, encoding = 'ISO-8859-1', engine='python', delimiter = ',') # 调整car列位置到第10列(索引为9) car_column = df.pop('car') df.insert(9, 'car', car_column) # 写入对应工作表 df.to_excel(writer, sheet_name = f'Sheet{idx}', index = False)
如果需要用CSV原文件名作为工作表名,可将sheet_name参数改为csv.stem,注意Excel工作表名最多支持31个字符,过长可按需裁剪。
内容的提问来源于stack exchange,提问作者youaresoconfused
相关产品推荐
相关产品推荐

