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

如何用pandas.concat()合并多文件夹同名DataFrame并保存

使用pandas.concat()合并多文件夹下同名CSV文件

文件分布情况

folder1/
df1.csv
df4.csv
df5.csv

folder2/
df1.csv
df3.csv
df4.csv

folder3/
df4.csv

目标效果

合并后生成finalfolder,包含以下文件:

finalfolder/
df1.csv (合并folder1和folder2的内容)
df3.csv (来自folder2)
df4.csv (合并folder1、folder2、folder3的内容)
df5.csv (来自folder1)

实现方案

核心思路

  • 按文件名对所有CSV文件分组,收集每个文件名对应的所有文件路径
  • 对每组同名文件,读取为DataFrame后用pandas.concat()合并
  • 创建目标文件夹,将合并后的结果保存为CSV

完整代码

import pandas as pd
import os
from collections import defaultdict

# 定义待处理文件夹列表和目标文件夹
folders = ["folder1", "folder2", "folder3"]
target_folder = "finalfolder"

# 创建目标文件夹(不存在则自动创建)
os.makedirs(target_folder, exist_ok=True)

# 按文件名分组存储对应的文件路径
file_groups = defaultdict(list)
for folder in folders:
    for filename in os.listdir(folder):
        if filename.endswith(".csv"):
            file_path = os.path.join(folder, filename)
            file_groups[filename].append(file_path)

# 遍历每组文件,合并并保存
for filename, file_paths in file_groups.items():
    # 读取所有同名文件为DataFrame列表
    dfs = [pd.read_csv(path) for path in file_paths]
    # 合并DataFrame并重置索引
    merged_df = pd.concat(dfs, ignore_index=True)
    # 保存到目标文件夹
    save_path = os.path.join(target_folder, filename)
    merged_df.to_csv(save_path, index=False)

代码说明

  • defaultdict(list):自动按文件名分组,无需手动判断分组逻辑
  • os.makedirs(..., exist_ok=True):避免因目标文件夹已存在而报错
  • pd.concat(..., ignore_index=True):合并后重置索引,避免出现重复索引问题
  • to_csv(index=False):保存时不写入索引列,避免生成多余的列

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 22:35:39