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

如何用Python将多个CSV文件合并至单个Excel工作表?

解决多CSV文件合并到Excel多工作表的问题

问题分析

你当前的核心问题是:无法将不同CSV文件的数据分别写入Excel的对应工作表,且因列数不一致引发数组错误。两次尝试的代码均存在逻辑或语法错误:

  • 代码1仅读取单个CSV数据并重复写入所有工作表,导致所有标签页内容一致;
  • 代码2存在变量未定义、错误转换DataFrame列表的问题,引发形状不匹配报错,同时未将每个CSV对应到正确工作表。

错误代码问题拆解

代码1的问题

  • 仅读取doc1.csv到reading变量,但未使用该变量,反而引用未定义的df(实际运行会直接报错);
  • 循环中未针对每个CSV文件重新读取数据,导致所有工作表写入相同内容。

代码2的问题

  • directory_path变量未定义,glob.glob无法正确获取文件路径;
  • df = pd.DataFrame(df_list)是错误操作:df_list已经是DataFrame对象的列表,直接转换会因每个DataFrame列数/行数不同引发数组形状不匹配错误;
  • 循环逻辑混乱,未将每个CSV对应的DataFrame写入对应工作表。

修正后的代码

以下代码实现将指定目录下的所有CSV文件分别写入Excel的不同工作表,自动处理列数不一致的情况:

import pandas as pd
import glob
import os

# 设置CSV文件所在目录
csv_dir = 'C:/Users/user3482176/correct_document_location'
os.chdir(csv_dir)

# 获取目录下所有CSV文件路径
csv_files = glob.glob('*.csv')

# 创建Excel写入对象
with pd.ExcelWriter('combined_csv_files.xlsx', engine='openpyxl') as writer:
    for csv_file in csv_files:
        # 读取当前CSV文件
        df = pd.read_csv(csv_file)
        # 提取文件名作为工作表名称(安全处理含多个点的文件名)
        sheet_name = os.path.splitext(csv_file)[0]
        # 将DataFrame写入对应工作表
        df.to_excel(writer, sheet_name=sheet_name, index=False)

代码说明

  • 使用glob.glob('*.csv')自动获取目录下所有CSV文件,无需手动列出文件名;
  • 循环中每次读取单个CSV文件,确保每个工作表对应正确的数据;
  • os.path.splitext安全提取文件名(避免split('.')[0]在文件名含多个点时出错);
  • pandas会自动处理列数不一致的情况,缺失的列会填充为NaN,不影响写入。

内容的提问来源于stack exchange,提问作者user3482176

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.21 11:13:17