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

如何将数据表中的多列转换为行结构?

如何实现多列到行的数据转换

我有如下结构的原始数据表:

IdABC
001abcbcadef
002efgabcghi
003bcaxyzdef

希望将其转换为如下结构:

IdValue
001abc
001bca
001def
002efg
002abc
002ghi
003bca
003xyz
003def

请问该如何实现这种多列到行的转换?


方案1:使用Excel(Power Query)

  • 选中原始数据区域,点击「数据」选项卡 →「从表格/区域」,将数据导入Power Query编辑器
  • 在编辑器中选中Id列,点击「转换」选项卡 →「逆透视列」→「逆透视其他列」
  • 右键删除自动生成的「属性」列,将「值」列重命名为Value
  • 点击「关闭并上载」,即可得到目标格式的数据

方案2:使用SQL

MySQL/PostgreSQL 语法

用UNION ALL拆分多列为行:

SELECT Id, A AS Value FROM your_table
UNION ALL
SELECT Id, B AS Value FROM your_table
UNION ALL
SELECT Id, C AS Value FROM your_table
ORDER BY Id;

SQL Server 语法

用UNPIVOT语法实现:

SELECT Id, Value
FROM your_table
UNPIVOT (
    Value FOR Columns IN (A, B, C)
) AS unpvt
ORDER BY Id;

方案3:使用Python Pandas

利用melt函数快速完成列转行:

import pandas as pd

# 构造原始数据(实际场景可通过read_csv/read_excel读取)
df = pd.DataFrame({
    'Id': ['001', '002', '003'],
    'A': ['abc', 'efg', 'bca'],
    'B': ['bca', 'abc', 'xyz'],
    'C': ['def', 'ghi', 'def']
})

# 执行列转行,保留Id列,合并其他列为Value
melted_df = df.melt(id_vars='Id', value_name='Value').drop(columns='variable')

# 按Id排序并重置索引
melted_df = melted_df.sort_values('Id').reset_index(drop=True)

print(melted_df)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.22 13:09:28