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

保留其他列不变的同时对多列执行Unpivot操作

多列批量Unpivot数据表转换方案

Excel Power Query 操作步骤

  • 选中目标数据表,点击「数据」选项卡 →「从表格/区域」,进入Power Query编辑器
  • 若有需要保留的固定列,先选中这些列;右键点击任意选中列,选择「逆透视列」→「逆透视其他列」,自动将剩余列转换为「属性」和「值」两列
  • 拆分「属性」列:选中该列,点击「转换」→「拆分列」→「按分隔符」,选择列名中的分隔符(如“-”),拆分为「指标名称」和「季度」两列
  • 调整列顺序后,点击「关闭并上载」即可生成目标格式数据

SQL 实现(以SQL Server为例)

通过UNPIVOT完成逆透视,结合字符串拆分提取指标和季度:

SELECT 
    保留列1, 保留列2, -- 替换为实际需保留的列名
    LEFT(pivot_col, CHARINDEX('-', pivot_col) - 1) AS 指标名称,
    RIGHT(pivot_col, LEN(pivot_col) - CHARINDEX('-', pivot_col)) AS 季度,
    value AS 数值
FROM 
    原数据表名
UNPIVOT (
    value FOR pivot_col IN (
        [指标1-2022Q1], [指标1-2022Q2], -- 替换为所有需逆透视的列名
        [指标2-2022Q1], [指标2-2022Q2],
        -- 依次列出所有目标列,列数量较多时可使用动态SQL自动生成
    )
) AS unpvt;

Python Pandas 实现

利用melt函数快速逆透视,再拆分列:

import pandas as pd

# 读取原数据
df = pd.read_excel('原数据表.xlsx')

# 指定保留列和需逆透视的列
id_columns = ['保留列1', '保留列2']  # 替换为实际保留列
pivot_columns = [col for col in df.columns if '-' in col]

# 执行逆透视
melted_data = df.melt(
    id_vars=id_columns,
    value_vars=pivot_columns,
    var_name='指标_季度',
    value_name='数值'
)

# 拆分指标名称和季度
melted_data[['指标名称', '季度']] = melted_data['指标_季度'].str.split('-', expand=True)

# 整理最终结果
final_data = melted_data[id_columns + ['指标名称', '季度', '数值']].drop('指标_季度', axis=1)

# 保存到文件
final_data.to_excel('目标数据表.xlsx', index=False)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.29 07:42:15