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

如何修改Pandas代码将CSV文件合并至其他磁盘文件夹?

问题描述

同事编写了一段用于合并数据库批量导出CSV文件的代码:

import os
import pandas as pd
folder_path = r'C:\_batches'

files = [os.path.join(folder_path, file) for file in os.listdir(folder_path)]
df = pd.concat([pd.read_csv(os.path.join(folder_path, file)) for file in files])
df.to_csv('combo_csv.csv', index=None)

由于当前数据量已达60GB且持续增长,需要将合并后的文件保存到剩余空间充足的其他磁盘。自行修改后的代码无法正常运行:

import os
import pandas as pd
folder_path_input = r'C:\_batches'
folder_path_output = r'D:\_batches_Concat'

files = [os.path.join(folder_path_input, file) for file in os.listdir(folder_path_input)]
df = pd.concat([pd.read_csv(os.path.join(folder_path_output, file)) for file in files])
df.to_csv('batch_1.csv', index=None)

请问如何修改代码,才能将合并后的CSV文件保存到指定的其他磁盘文件夹中?


错误分析

你的代码存在两个核心问题:

  1. 读取源CSV文件时错误使用了输出路径folder_path_output,源文件实际存储在folder_path_input下,路径不匹配会导致找不到文件
  2. 保存文件时仅指定了文件名,未关联输出文件夹路径,文件会默认保存到脚本运行目录,而非目标磁盘文件夹
  3. 未提前检查输出文件夹是否存在,若目标文件夹不存在会直接报错

修正后的代码
import os
import pandas as pd

folder_path_input = r'C:\_batches'
folder_path_output = r'D:\_batches_Concat'

# 确保输出文件夹存在,不存在则自动创建
os.makedirs(folder_path_output, exist_ok=True)

# 过滤输入文件夹中的CSV文件,避免读取非CSV内容
files = [
    os.path.join(folder_path_input, file) 
    for file in os.listdir(folder_path_input) 
    if file.lower().endswith('.csv')
]

# 批量读取并合并CSV,重置索引避免重复
df = pd.concat([pd.read_csv(file) for file in files], ignore_index=True)

# 拼接完整的输出文件路径
output_full_path = os.path.join(folder_path_output, 'batch_1.csv')
# 保存合并后的文件
df.to_csv(output_full_path, index=None)

关键优化点
  • os.makedirs(..., exist_ok=True):自动创建目标输出文件夹,避免因文件夹不存在导致的保存失败
  • 增加CSV后缀过滤:只读取输入文件夹中的CSV文件,排除其他无关文件引发的读取错误
  • 完整输出路径拼接:通过os.path.join将输出文件夹和文件名组合,确保文件保存到指定磁盘目录
  • ignore_index=True:合并后重置DataFrame索引,避免原文件索引重复引发的问题

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 10:44:53