基于特定规则重命名DataFrame列的技术实现咨询
解决方案
可以通过自定义重命名函数结合Pandas的rename()方法来实现需求,步骤如下:
定义映射字典
先明确两个规则对应的映射,注意匹配原列名的大小写(原列category2和映射里的Category2需统一逻辑):rename_brands = {'1': 'Vans', '2': 'Nike', '3': 'Adidas'} # 若严格匹配原列名小写,用这个映射 rename_columns = {'Id': 'record', 'category2': 'Sku'}编写自定义重命名函数
针对每个列名判断归属规则,分别处理:def rename_column(col): # 处理以Brand开头且末尾为数字的列 if col.startswith('Brand') and col[-1].isdigit(): # 提取末尾数字,用品牌映射转换 brand_num = col[-1] return rename_brands.get(brand_num, col) # 处理非Brand开头的列 else: # 用通用列名映射转换,未匹配到则保留原列名 return rename_columns.get(col, col)如果需要匹配原映射里的
Category2(首字母大写),可把非Brand列的处理改成:return rename_columns.get(col.capitalize(), col)此时
rename_columns可保留原定义:{'Id': 'record', 'Category2': 'Sku'}执行重命名
用Pandas的rename()方法应用自定义函数:import pandas as pd # 示例DataFrame df = pd.DataFrame({ 'Id': [1,2,3], 'category2': ['A','B','C'], 'Brandyqdy1': [10,20,30], 'Brandyqwdwdy2': [40,50,60], 'Brandyqdw3': [70,80,90] }) # 生成重命名后的DataFrame df_renamed = df.rename(columns=rename_column) # 查看结果 print(df_renamed.columns) # 输出:Index(['record', 'Sku', 'Vans', 'Nike', 'Adidas'], dtype='object')
说明
- 自定义函数会逐个检查列名,优先处理Brand开头的列,提取末尾数字后映射为对应品牌名
- 非Brand开头的列按
rename_columns规则转换,未匹配到的列名会保留原样 - 若需直接修改原DataFrame,可添加
inplace=True参数:df.rename(columns=rename_column, inplace=True)
内容的提问来源于stack exchange,提问作者M J
相关产品推荐
相关产品推荐

