如何编写代码批量将多个CSV中指定列名统一改为'title'?
批量统一CSV列名解决方案
核心思路
先定义所有需要替换的列名变体,然后遍历目标目录下的所有CSV文件,自动识别匹配的列名并统一改为title,最后完成文件的保存处理。
完整代码实现
import pandas as pd import glob # 定义需要替换为'title'的所有列名变体,可根据实际需求随时扩展 target_col_names = ['movie_title', 'name', 'titles', 'movie_name'] # 获取指定目录下的所有CSV文件路径(示例为当前目录,可替换为实际路径如'./datasets/*.csv') csv_files = glob.glob('*.csv') for file in csv_files: # 读取CSV文件 df = pd.read_csv(file) # 构建列名替换字典:自动匹配DataFrame中存在的目标列名,映射为'title' rename_dict = {col: 'title' for col in df.columns if col in target_col_names} # 执行列名替换 df_renamed = df.rename(columns=rename_dict) # 保存处理后的文件,这里直接覆盖原文件;若要保留原文件,可修改文件名如f'processed_{file}' df_renamed.to_csv(file, index=False) print(f"已完成文件处理:{file}")
关键细节说明
- 列名扩展:如果还有其他需要匹配的列名(比如
film_name、movie_title_zh),直接添加到target_col_names列表即可。 - 重复列名处理:如果单个CSV文件中存在多个匹配的列名(比如同时有
name和titles),处理后会出现多个title列。若要避免这种情况,可在替换前做检查处理:# 检查是否存在多个目标列,若有则保留第一个匹配列,删除其余 matched_cols = [col for col in df.columns if col in target_col_names] if len(matched_cols) > 1: df = df.drop(columns=matched_cols[1:]) rename_dict = {matched_cols[0]: 'title'} - 路径适配:
glob.glob('*.csv')匹配当前目录下所有CSV文件,若文件在子目录,可修改路径为glob.glob('./your-folder/*.csv')。
内容的提问来源于stack exchange,提问作者ProgrammingStudent
相关产品推荐
相关产品推荐

