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

如何合并多个DataFrame并写入指定文件夹CSV?请求代码修复

代码问题分析与优化方案

原代码核心问题

  • 循环逻辑错误:第二个for循环每次将df变量覆盖为单个文件的DataFrame,而非向初始列表追加数据,最终df仅保留最后一个文件的内容
  • 无效冗余代码:第一个for循环仅计算文件路径但未实际使用
  • 合并逻辑错误:尝试遍历单个DataFrame的列执行pd.concat,完全不符合多文件合并逻辑
  • 文件保存逻辑错误:覆盖传入的output_folder_path变量,且仅保存最后一个文件的DataFrame,而非合并结果
  • 变量使用混乱:cleaned_df的初始化、赋值和追加操作完全不符合预期

优化后的代码

import os
import pandas as pd

def clean_files(input_folder_path, output_folder_path):
    # 获取目标文件夹下所有CSV文件
    csv_list = [file for file in os.listdir(input_folder_path) if file.endswith('.csv')]
    
    # 初始化列表存储每个文件的清理后DataFrame
    cleaned_dfs = []
    
    # 遍历处理每个CSV文件
    for file in csv_list:
        file_full_path = os.path.join(input_folder_path, file)
        # 读取文件并跳过前5行
        df = pd.read_csv(file_full_path, skiprows=5, low_memory=False)
        cleaned_dfs.append(df)
        
        # 保存单个清理后的文件到输出目录
        single_output_path = os.path.join(output_folder_path, f"cleaned_{file}")
        df.to_csv(single_output_path, index=False)
    
    # 合并所有清理后的DataFrame为单个DataFrame
    merged_df = pd.concat(cleaned_dfs, ignore_index=True)
    
    # 保存合并后的总文件
    merged_output_path = os.path.join(output_folder_path, "cleaned_merged_all.csv")
    merged_df.to_csv(merged_output_path, index=False)
    
    # 返回合并后的DataFrame和单个文件的DataFrame列表
    return merged_df, cleaned_dfs

优化说明

  • 修正循环逻辑:遍历文件时将每个清理后的DataFrame追加到列表,避免变量覆盖
  • 移除冗余代码:删除未使用的无效循环
  • 正确实现合并:使用pd.concat合并列表中所有DataFrame,添加ignore_index=True重置索引避免重复
  • 完善文件保存:同时保存单个清理文件与合并后的总文件,不覆盖传入的路径参数
  • 变量命名更清晰:用cleaned_dfs明确存储多文件DataFrame的用途,避免混淆

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.30 17:50:17