如何修改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文件保存到指定的其他磁盘文件夹中?
错误分析
你的代码存在两个核心问题:
- 读取源CSV文件时错误使用了输出路径
folder_path_output,源文件实际存储在folder_path_input下,路径不匹配会导致找不到文件 - 保存文件时仅指定了文件名,未关联输出文件夹路径,文件会默认保存到脚本运行目录,而非目标磁盘文件夹
- 未提前检查输出文件夹是否存在,若目标文件夹不存在会直接报错
修正后的代码
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.
相关产品推荐
相关产品推荐

