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

如何将300个分属三类的文件合并为3个CSV文件?

修正方案:按文件类型分别合并导出独立CSV

嘿,我一眼就看出问题所在了——你当前的代码把所有类型的数据都塞进了同一个列表,而且最后只导出了循环结束时最后一个类型的文件,这才导致所有内容都混进了一个CSV里。咱们调整一下逻辑,让每个类型单独处理并导出,代码如下:

import os
import glob
import pandas as pd

# 定义需要处理的三种文件类型标识
file_types = ['FFIEC CDR Call Bulk POR', 'FFIEC CDR Call Schedule CI', 'FFIEC CDR Call Schedule ENT']
source_path = "C:\\Users\\ryans\\OneDrive\\Desktop\\schemas\\"
output_path = "C:\\Users\\ryans\\OneDrive\\Desktop\\"

# 逐个处理每种文件类型
for current_type in file_types:
    # 直接筛选当前类型的所有txt文件
    matching_files = glob.glob(os.path.join(source_path, f"*{current_type}*.txt"))
    type_specific_dfs = []
    
    for file in matching_files:
        # 读取文件(注意skiprows=1要确保符合所有该类型文件的格式)
        df = pd.read_csv(file, delimiter='\t', skiprows=1)
        df['source_file'] = os.path.basename(file)  # 记录源文件名,方便溯源
        type_specific_dfs.append(df)
    
    # 只有找到对应文件时才合并导出,避免生成空文件
    if type_specific_dfs:
        merged_df = pd.concat(type_specific_dfs, ignore_index=True, sort=True)
        # 用os.path.join拼接路径更安全,避免字符串拼接的路径问题
        merged_df.to_csv(os.path.join(output_path, f"{current_type}.csv"), index=False)
        print(f"✅ 完成:{current_type} 类型共合并 {len(matching_files)} 个文件,已导出到指定路径")
    else:
        print(f"⚠️ 提示:未找到 {current_type} 类型的文件")

关键调整点说明:

  • 按类型分治处理:不再用嵌套循环判断每个文件属于哪种类型,而是直接针对每个类型筛选对应的文件,逻辑更清晰,也避免了数据混装
  • 类型独立存储:每种类型单独维护一个DataFrame列表,确保不同类型的数据不会交叉
  • 即时导出:处理完一种类型就立即合并导出,最终会生成三个分别对应三种类型的CSV文件
  • 容错处理:增加了空文件判断,避免没有对应类型文件时生成空CSV
  • 路径安全:用os.path.join拼接路径,比直接字符串相加更稳妥,能兼容不同操作系统的路径格式

原来代码的问题复盘:

  • 你之前的all_df把所有类型的DataFrame都合并到了一起,最后pd.concat得到的是一个包含所有数据的大表
  • 最后一行的x是循环结束后mylist的最后一个元素,所以仅导出了最后一个类型的文件,但内容却是所有类型的混合数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.11 08:11:27