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

如何将长表转换为指定结构的宽表(Pandas与Excel实现)

长表转指定宽表的实现方案(Pandas + Excel)

Pandas 实现

代码示例

import pandas as pd

# 构造原始长表数据(实际使用时可替换为 pd.read_csv/ExcelFile 读取外部数据)
raw_data = {
    'Program': ['N', 'N', 'N', 'Y', 'Y', 'Y'],
    'Seg': ['A', 'B', 'C', 'A', 'B', 'C'],
    'Percent': ['1%', '13%', '4%', '6%', '5%', '8%']
}
df = pd.DataFrame(raw_data)

# 核心转换逻辑:将 Seg、Program 设置为多级列索引,值为 Percent
wide_df = df.set_index(['Seg', 'Program'])['Percent'].unstack([0, 1])
# 将行索引命名为 Percent,匹配目标结构
wide_df.index = ['Percent']

# 查看转换结果
print(wide_df)

常用数据选取操作

  • 选取所有 Seg 为 A 的数据:wide_df['A']
  • 选取所有 Program 为 N 的数据:wide_df.loc[:, (slice(None), 'N')]
  • 选取 Seg 为 B 且 Program 为 Y 的数据:wide_df['B']['Y']

Excel 实现

方法一:数据透视表(推荐)

  1. 选中原始数据的全部区域,点击「插入」选项卡 → 「数据透视表」,选择透视表放置位置(新工作表或空白区域均可)。
  2. 在右侧「数据透视表字段」面板中:
    • 把「Seg」拖到「列」区域
    • 把「Program」拖到「列」区域(放在「Seg」下方,形成多级列标题)
    • 把「Percent」拖到「值」区域,右键值字段 → 「值字段设置」,选择「最大值」或「最小值」(因每个 Seg+Program 组合唯一,结果完全一致)
  3. 调整布局:点击「数据透视表工具-设计」→「报表布局」→「以表格形式显示」,将行标签的空白单元格改为「Percent」,即可得到目标结构。

方法二:XLOOKUP 函数(手动构造)

假设原始数据在 A7:C12 区域:

  1. 在空白区域第一行(如 A1:F1)输入 Seg 值:A, A, B, B, C, C
  2. 在第二行(A2:F2)输入对应 Program 值:N, Y, N, Y, N, Y
  3. 在第三行 A3 单元格输入公式:
    =XLOOKUP(1, ($A$7:$A$12=A1)*($B$7:$B$12=A2), $C$7:$C$12)
    
  4. 向右填充公式至 F3,即可自动匹配出对应 Percent 值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 21:55:27