如何将Pandas单文件列拆分程序改为批量处理文件夹内CSV文件
批量处理文件夹内CSV文件的文本分列方案
先修正原代码中的潜在错误,再重构为批量处理逻辑:
核心调整点
- 把单文件处理逻辑封装成可复用的函数
- 遍历目标文件夹下所有
.csv格式文件 - 修复原代码中列名不匹配的问题(原代码先设置列名为
Last Name/First Name,后续却访问Name列,会触发KeyError) - 支持自定义输入、输出文件夹路径
完整代码
import pandas as pd import os def process_single_csv(filepath, output_dir, encoding='cp1252'): # 读取CSV文件:若原CSV自带表头,删除header=None;若无表头,需确保列对应关系正确 data = pd.read_csv(filepath, header=None, encoding=encoding) # 假设原CSV无表头,两列依次为Name和SName data.columns = ['Name', 'SName'] # 拆分Name列为姓氏和名字,去除前后空格 name_split = data["Name"].str.split(",", n=1, expand=True) data["Last Name"] = name_split[0].str.strip() data["First Name"] = name_split[1].str.strip() # 拆分SName列为对应姓氏和名字 sname_split = data["SName"].str.split(",", n=1, expand=True) data["S Last Name"] = sname_split[0].str.strip() data["S First Name"] = sname_split[1].str.strip() # 生成输出路径,替换后缀为xlsx base_name = os.path.splitext(os.path.basename(filepath))[0] output_path = os.path.join(output_dir, f"{base_name}.xlsx") # 保存处理后的文件 data.to_excel(output_path, index=False) print(f"已完成:{output_path}") def batch_process_csv_folder(input_folder, output_folder, encoding='cp1252'): # 自动创建输出文件夹(不存在则新建) os.makedirs(output_folder, exist_ok=True) # 遍历文件夹内所有CSV文件(忽略大小写) for filename in os.listdir(input_folder): if filename.lower().endswith('.csv'): full_path = os.path.join(input_folder, filename) process_single_csv(full_path, output_folder, encoding) # 配置你的文件夹路径 INPUT_FOLDER = "C:/Users/username/folder1/folder2/folder3" # 存放CSV的文件夹 OUTPUT_FOLDER = "C:/Users/username/folder1/folder2/output" # 保存Excel的文件夹 # 启动批量处理 batch_process_csv_folder(INPUT_FOLDER, OUTPUT_FOLDER)
关键说明
- 若你的CSV文件自带表头,直接删除
data.columns = ['Name', 'SName']这一行即可 - 添加
str.strip()是为了清除逗号前后的空格,避免拆分后的姓名带多余空白 - 遍历逻辑会忽略非CSV文件,同时兼容
.CSV大写后缀的文件
内容的提问来源于stack exchange,提问作者Kenny
相关产品推荐
相关产品推荐

