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

基于特定规则重命名DataFrame列的技术实现咨询

解决方案

可以通过自定义重命名函数结合Pandas的rename()方法来实现需求,步骤如下:

  1. 定义映射字典
    先明确两个规则对应的映射,注意匹配原列名的大小写(原列category2和映射里的Category2需统一逻辑):

    rename_brands = {'1': 'Vans', '2': 'Nike', '3': 'Adidas'}
    # 若严格匹配原列名小写,用这个映射
    rename_columns = {'Id': 'record', 'category2': 'Sku'}
    
  2. 编写自定义重命名函数
    针对每个列名判断归属规则,分别处理:

    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'}

  3. 执行重命名
    用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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 20:47:22