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

Python透视表动态修改列名:替换COUNT_前缀为Disease_COUNT_

问题描述

原始数据集:

ID       MONTH_ID       CATEGORY     Disease_COUNT
551     2021-11           NON_MET       1
580     2022-03            MET          1
580     2022-01            MET          1

现有创建透视表的代码:

df2 = pd.pivot_table(df1,index=['ID','MONTH_ID'],
                        columns=['CATEGORY'],
                         values=["Disease_COUNT"]
                        ).reset_index()
cols=  ['BH_ID', 'MONTH_ID']
cols.extend([x for x in df2.columns.get_level_values(1) if x != ''])
df2.columns = cols

当前透视表列名为ID、MONTH_ID、COUNT_MET、COUNT_NON_MET,需要不使用rename函数,动态修改代码让列名变为ID、MONTH_ID、Disease_COUNT_MET、Disease_COUNT_NON_MET,最终输出:

ID          MONTH_ID    Disease_COUNT_MET   Disease_COUNT_NON_MET
551          2021-11         null                    1
580          2022-03          1                    null
580          2022-01          1                    null
解决方案

修改列名构造逻辑,将值列名与分类取值拼接,同时修正原代码中的笔误:

df2 = pd.pivot_table(df1, index=['ID','MONTH_ID'],
                     columns=['CATEGORY'],
                     values=["Disease_COUNT"]
                    ).reset_index()
# 初始化基础列名,修正原代码中BH_ID的笔误
cols = ['ID', 'MONTH_ID']
# 遍历透视表的多级列,拼接出目标格式的列名
cols.extend([f"{level0}_{level1}" for level0, level1 in df2.columns if level0 != '' and level1 != ''])
df2.columns = cols

关键修改说明:

  1. 修正原代码中BH_ID的笔误,改为匹配原始数据集的ID
  2. 不再仅提取分类列的取值,而是将值列名称(Disease_COUNT)与分类取值拼接,生成符合要求的列名
  3. 通过遍历多级列的两个层级,实现动态适配CATEGORY的所有可能取值,无需硬编码列名

内容的提问来源于stack exchange,提问作者Python_help

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:35:24