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

如何在Pandas中按原始CSV命名规则保存拼接后的DataFrame

解决CSV文件批量拼接并按规则命名输出的问题

问题分析

你的需求是批量读取同前缀的CSV文件,拼接后按[前缀]_[年月]_month.csv格式保存,但现有代码存在以下问题:

  • 循环语句存在多余缩进,会导致语法错误
  • 输出文件名仅使用了最后一个文件的名称片段,未按要求提取统一前缀和年月
  • 没有实现从文件名中提取前缀(如ANGOSTURA_U1)和年月(如202209)的逻辑

修正后的代码

import pandas as pd
import glob
import os

# 定义文件路径
input_dir = "C:/Users/ep_irojaso/Desktop/PROGRAMA DESEMPEÑO/saturnmensual/"
output_dir = "C:/Users/ep_irojaso/Desktop/PROGRAMA DESEMPEÑO/Saturn2mensual/"

# 获取所有CSV文件路径
all_files = glob.glob(f"{input_dir}*.csv")
file_list = []

# 批量读取文件
for f in all_files:
    # 只读取指定列
    data = pd.read_csv(f, usecols=["t", "f"])
    file_list.append(data)

# 拼接所有数据
df = pd.concat(file_list, ignore_index=True)

# 提取前缀和年月(从第一个文件获取,因为文件夹内只有一类前缀)
first_file_name = os.path.basename(all_files[0])
# 拆分文件名:比如ANGOSTURA_U1_20220901.csv -> ['ANGOSTURA_U1', '20220901', 'csv']
name_parts = first_file_name.split(".")[0].split("_")
# 前缀是前两部分拼接:ANGOSTURA_U1
prefix = "_".join(name_parts[:2])
# 年月是日期部分的前6位:20220901 -> 202209
year_month = name_parts[2][:6]

# 生成输出文件名
output_file_name = f"{prefix}_{year_month}_month.csv"
output_path = os.path.join(output_dir, output_file_name)

# 保存拼接后的文件
df.to_csv(output_path, index=False)

关键逻辑说明

  • 路径处理:单独定义输入输出目录,让代码更易维护
  • 前缀与年月提取:从第一个文件名中拆分信息,因为文件夹内只有一类前缀,确保命名统一
    • 拆分文件名时,先去掉后缀.csv,再按_分割成片段
    • 前缀取前两个片段拼接(如ANGOSTURA和U1)
    • 年月取日期片段的前6位(如20220901截取为202209)
  • 保存文件:使用os.path.join拼接路径,避免跨系统路径问题,同时设置index=False防止保存额外的索引列

内容的提问来源于stack exchange,提问作者Isaac Rojas Oyarzun

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 21:40:58