多列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等,每个列对应原始数据中唯一的一个条目值
示例输出的部分内容如下:
| Year | rate_TNMAB123_Female_wk | rate_TNMAB123_Female_wkend | rate_TNMAB123_Male_wk | rate_TNMAB123_Male_wkend | target_TNMAB456_Male_wkend |
|---|---|---|---|---|---|
| 2008 | 5.6 | 3.2 | 2.3 | 3.2 | 33.4 |
| 2009 | 3.5 | 2.6 | 4.5 | 6.7 | 35.2 |
如果你想保留多层级列结构方便后续筛选(比如直接提取所有rate相关列),可以跳过合并列名的步骤,直接用pivoted_df['rate']['TNMAB123']这类方式筛选数据。
内容的提问来源于stack exchange,提问作者The Great
相关产品推荐
相关产品推荐

