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

如何用Pandas按分组将多行数据转置为单列

数据集宽表转长表的实现方案

原始数据集

IDa1a2a3
a153
a233
b235
b356
c513
c242

目标输出格式

IDLevels
a1
a5
a3
a2
a3
a3
b2
b3
b5
b3
b5
b6
c5
c1
c3
c2
c4
c2

方法一:Python Pandas 实现

使用 melt 函数快速完成宽表转长表操作:

import pandas as pd

# 构造原始数据框
df = pd.DataFrame({
    'ID': ['a', 'a', 'b', 'b', 'c', 'c'],
    'a1': [1, 2, 2, 3, 5, 2],
    'a2': [5, 3, 3, 5, 1, 4],
    'a3': [3, 3, 5, 6, 3, 2]
})

# 执行 unpivot 转换
unpivoted_df = df.melt(id_vars='ID', value_name='Levels').drop(columns='variable')

# 按 ID 排序(可选,匹配目标格式顺序)
unpivoted_df = unpivoted_df.sort_values('ID').reset_index(drop=True)

print(unpivoted_df)

方法二:Excel Power Query 实现

  1. 选中原始数据区域,点击「数据」选项卡 →「从表格/区域」(确保数据包含表头)。
  2. 在 Power Query 编辑器中:
    • 选中 ID 列,右键点击列头选择「逆透视其他列」。
    • 将自动生成的 Value 列重命名为 Levels。
  3. 点击「关闭并上载」,将转换后的数据导出回 Excel 表格。

方法三:SQL 实现

通过 UNION ALL 合并多列数据:

SELECT ID, a1 AS Levels FROM your_table
UNION ALL
SELECT ID, a2 AS Levels FROM your_table
UNION ALL
SELECT ID, a3 AS Levels FROM your_table
ORDER BY ID;

注:替换 your_table 为实际表名。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 22:04:58