如何读取文件夹中特定命名的多CSV文件,添加标签后合并?
解决方案(基于Python Pandas)
直接上可运行的代码及关键步骤说明:
1. 导入必要依赖库
import pandas as pd import os
2. 核心处理逻辑
先初始化空列表存储每个处理后的数据集,再通过.format()构造文件名循环读取、添加标签,最后合并输出:
# 初始化空列表,存放每个处理后的DataFrame processed_dfs = [] # 假设文件序号从1到10,根据你的实际文件数量修改范围 for idx in range(1, 11): # 用.format()拼接目标文件名 target_file = "{}.car.csv".format(idx) # 先检查文件是否存在,避免报错 if os.path.exists(target_file): # 读取CSV文件 df = pd.read_csv(target_file) # 在数据集最右侧添加新标签列,这里用文件序号作为标签值,可按需修改 df["source_file_tag"] = f"car_file_{idx}" # 将处理后的数据集加入列表 processed_dfs.append(df) else: print(f"文件 {target_file} 未找到,跳过") # 合并所有处理后的数据集(因属性一致,直接按行合并) merged_data = pd.concat(processed_dfs, ignore_index=True) # 保存合并后的文件 merged_data.to_csv("merged_all_car_data.csv", index=False)
3. 适配未知文件数量的场景
如果不确定文件的最大序号,可以自动扫描文件夹筛选目标文件:
# 遍历当前文件夹,筛选所有以.car.csv结尾的文件 target_files = [f for f in os.listdir() if f.endswith(".car.csv")] # 按文件名里的序号排序,确保处理顺序正确 target_files.sort(key=lambda x: int(x.split(".")[0])) for file_name in target_files: df = pd.read_csv(file_name) # 提取文件名中的序号作为标签值 file_idx = file_name.split(".")[0] df["source_file_tag"] = f"car_file_{file_idx}" processed_dfs.append(df) # 合并、保存步骤同上
自定义说明
- 新标签列的名称(如
source_file_tag)和标签值(如car_file_{idx})可根据需求修改; - 如果文件不在当前工作目录,需要在
target_file中拼接完整路径,比如"./data/{}.car.csv".format(idx)。
内容的提问来源于stack exchange,提问作者Jacob Issac
相关产品推荐
相关产品推荐

