使用Python Pandas读取多CSV文件转Excel并添加文件名至行
使用Pandas批量读取CSV并生成带文件名的Excel文件
以下是实现需求的完整代码,包含详细注释:
import pandas as pd import os # 配置路径(替换为你的实际路径) csv_directory = "./your_csv_folder" # 存放CSV文件的文件夹 output_excel_path = "merged_data_with_filenames.xlsx" # 初始化空DataFrame用于存储合并后的数据 merged_data = pd.DataFrame() # 遍历目标文件夹中的所有CSV文件 for file_name in os.listdir(csv_directory): if file_name.lower().endswith(".csv"): # 忽略大小写匹配CSV后缀 file_full_path = os.path.join(csv_directory, file_name) # 读取CSV文件 df = pd.read_csv(file_full_path) # 添加"来源文件名"列,若需去掉.csv后缀可替换为os.path.splitext(file_name)[0] df["来源文件名"] = file_name # 合并数据到总DataFrame merged_data = pd.concat([merged_data, df], ignore_index=True) # 将合并后的数据写入Excel,不保留索引列 merged_data.to_excel(output_excel_path, index=False)
补充说明
- 精准匹配CSV文件:如果文件夹中有非CSV文件,也可以用
glob库更可靠地筛选:from glob import glob csv_files = glob(os.path.join(csv_directory, "*.csv")) for file_full_path in csv_files: file_name = os.path.basename(file_full_path) # 后续读取合并逻辑同上 - 处理列结构差异:若不同CSV的列名/数量不一致,
concat会自动为缺失列填充NaN;如需严格统一列结构,可在pd.read_csv()中用usecols参数指定固定列。 - 大文件优化:处理超大CSV时,建议用
pd.read_csv(chunksize=10000)分块读取,避免内存溢出。
内容的提问来源于stack exchange,提问作者gani kalkote
相关产品推荐
相关产品推荐

