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

多列Pandas DataFrame透视转换技术问题求助

解决多列数据的透视/转置需求

我来帮你搞定这个多维度透视的问题~你之前用pivot报错,是因为pivot要求index和columns的组合必须唯一,但你的数据里同一个Year+Heading下还有Gender和day_type的区分,存在重复组合,所以触发了错误。而pivot_table是处理这类多维度场景的更合适工具,下面给出适配多列(rate和target)的完整方案:

步骤1:确认原始数据

先把你的原始DataFrame代码贴出来方便参考:

import pandas as pd

df1 = pd.DataFrame({
    'Gender':['Male','Male','Male','Male','Female','Female','Female','Female','Male','Male','Male','Male','Female','Female','Female','Female'], 
    'Year' :[2008,2008,2009,2009,2008,2008,2009,2009,2008,2008,2009,2009,2008,2008,2009,2009], 
    'rate':[2.3,3.2,4.5,6.7,5.6,3.2,3.5,2.6,2.3,3.2,4.5,6.7,5.6,3.2,3.5,2.6], 
    'Heading':['TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123','TNMAB123', 'TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456','TNMAB456'], 
    'target':[31.2,33.4,33.4,35.2,35.2,36.4,36.4,37.2,31.2,33.4,33.4,35.2,35.2,36.4,36.4,37.2], 
    'day_type':['wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend','wk','wkend']
})

步骤2:多列透视的实现代码

我们直接在pivot_table中指定多个指标列(rate和target),同时把所有非行索引的维度(Heading、Gender、day_type)放到列参数中,就能一次性展开所有维度和指标:

# 执行透视:Year作为行索引,其余维度作为列层级,同时包含rate和target两个指标
pivoted_df = df1.pivot_table(
    index='Year',
    columns=['Heading', 'Gender', 'day_type'],
    values=['rate', 'target'],
    aggfunc='first'  # 你的数据每个(Year+Heading+Gender+day_type)组合都是唯一的,用first不会改变原始值
)

# 把多层级列名合并成单层,让列名更直观易读
pivoted_df.columns = ['_'.join(col) for col in pivoted_df.columns.values]

# 可选:把Year从索引转成普通列(如果需要的话)
pivoted_df = pivoted_df.reset_index()

步骤3:结果说明

执行后你会得到符合预期的结构:

  • 行是唯一的Year值(2008、2009)
  • 列是所有维度+指标的组合,比如rate_TNMAB123_Male_wk、target_TNMAB456_Female_wkend等,每个列对应原始数据中唯一的一个条目值

示例输出的部分内容如下:

Yearrate_TNMAB123_Female_wkrate_TNMAB123_Female_wkendrate_TNMAB123_Male_wkrate_TNMAB123_Male_wkendtarget_TNMAB456_Male_wkend
20085.63.22.33.233.4
20093.52.64.56.735.2

如果你想保留多层级列结构方便后续筛选(比如直接提取所有rate相关列),可以跳过合并列名的步骤,直接用pivoted_df['rate']['TNMAB123']这类方式筛选数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 19:07:47