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

Pandas pivot_table结果不符合预期,请求调整方案

解决Pandas透视表输出结构不符合预期的问题

我懂你的困扰——现在生成的透视表列层级是先按指标(CLICKTHRU/INTERACTION)分组,再按标签名称排列,但你想要的是先以BLAZE_TAG_NAME_DESC的标签为分组,每个标签下对应两个指标列,同时把PRODUCT作为普通列展示对吧?

咱们直接来调整代码,几步就能搞定:

完整解决方案代码

import pandas as pd
import numpy as np

raw_data = {
 'PRODUCT': ['Display', 'InStream', 'Mobile'],
 'BLAZE_TAG_NAME_DESC': ['enewsletter', 'get_the_guide', 'logo'],
 'CLICKTHRU': [19,30,40],
 'INTERACTION':[30,40,50]}
df_a = pd.DataFrame(raw_data, columns = ['PRODUCT', 'BLAZE_TAG_NAME_DESC', 'CLICKTHRU','INTERACTION'])

# 生成基础透视表(和你原来的代码一致)
df_b = pd.pivot_table(df_a,index="PRODUCT",columns="BLAZE_TAG_NAME_DESC",values=['CLICKTHRU','INTERACTION'],aggfunc=np.sum,fill_value = 0)

# 1. 交换列的层级:把标签名称移到列的第一层,指标移到第二层
df_b = df_b.swaplevel(axis=1)
# 2. 对列排序,确保同一个标签下的两个指标相邻
df_b = df_b.sort_index(axis=1)
# 3. 把PRODUCT从行索引转为普通列
df_b = df_b.reset_index()

# 可选:如果想把多层列名合并成单一字符串(比如enewsletter_CLICKTHRU)
df_b.columns = ['_'.join(col).strip() if col[0] != 'PRODUCT' else col[0] for col in df_b.columns.values]

print(df_b)

关键步骤解释

  1. swaplevel(axis=1):你的原始透视表列是[指标, 标签]的双层结构,这一步把它换成[标签, 指标],让每个标签下自然对应两个指标列。
  2. sort_index(axis=1):避免列出现交叉排列的情况,保证同一个标签的两个指标紧紧挨在一起。
  3. reset_index():把PRODUCT从行索引转成普通列,和你期望的输出结构对齐。
  4. 合并列名(可选):如果不喜欢双层列名,可以把两层合并成一个带下划线的字符串,让输出更简洁。

执行后你会得到和预期一致的结果:

PRODUCT  enewsletter_CLICKTHRU  enewsletter_INTERACTION  get_the_guide_CLICKTHRU  get_the_guide_INTERACTION  logo_CLICKTHRU  logo_INTERACTION
0    Display                     19                        30                        0                         0               0                0
1   InStream                      0                         0                       30                        40               0                0
2     Mobile                      0                         0                        0                         0              40               50

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:01:21