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

如何编写代码批量将多个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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 01:25:24