如何用函数批量重命名DataFrame的多列表头?
Pandas DataFrame 批量重命名表头的实用方法
当需要重命名大量列(比如100列)时,手动逐个指定映射的方法效率极低,以下是几种高效的实现方式:
1. 直接赋值列名列表(适合有统一规律的场景)
如果新列名有固定规律(比如序号命名、加统一前缀/后缀),直接生成新列名列表赋值给df.columns是最快捷的方式:
import pandas as pd # 示例1:生成col_1到col_N的列名 df.columns = [f"col_{i+1}" for i in range(len(df.columns))] # 示例2:给所有列名加统一前缀 df.columns = ["processed_" + col for col in df.columns] # 示例3:批量替换列名中的特定字符 df.columns = df.columns.str.replace("raw_", "")
2. 结合自定义函数使用rename()方法(适合复杂自定义规则)
如果列名需要复杂的个性化处理,写一个自定义函数,通过rename()方法应用到所有列:
# 自定义列名处理函数 def process_col_name(col): # 这里可以写任意自定义逻辑:比如去空格、转驼峰、提取关键信息等 cleaned_col = col.strip().replace(" ", "_").lower() # 示例:如果列名包含"date"就加后缀"_dt" if "date" in cleaned_col: cleaned_col += "_dt" return cleaned_col # 应用函数到所有列,inplace=True直接修改原DataFrame df.rename(columns=process_col_name, inplace=True)
3. 用lambda函数快速实现简单规则
对于简单的列名转换,用lambda函数可以省去单独定义函数的步骤:
# 示例1:所有列名转为大写 df.rename(columns=lambda x: x.upper(), inplace=True) # 示例2:给每个列名添加对应的索引序号 df.rename(columns=lambda x, idx: f"{x}_{idx+1}", inplace=True)
选择哪种方法取决于你的具体需求:规律化的列名用直接赋值最高效,复杂逻辑用自定义函数更灵活。
内容的提问来源于stack exchange,提问作者Chun Seong
相关产品推荐
相关产品推荐

