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

如何根据Group ID将单列人员数据拆分为多列,实现行转列效果?

可行实现方案

你这个场景本质是给同组内的成员按顺序编号,再按编号转成列,不需要用常规的行转列/列转行逻辑,下面给不同工具的实现方法:

1. SQL 实现(通用标准语法)

先给同组的每个人加行号,再做条件聚合即可,示例代码:

WITH ranked_people AS (
    SELECT 
        People,
        `Group ID`,
        ROW_NUMBER() OVER (PARTITION BY `Group ID` ORDER BY People) AS rn
    FROM your_table
)
SELECT 
    MAX(CASE WHEN rn = 1 THEN People END) AS `People 1`,
    MAX(CASE WHEN rn = 2 THEN People END) AS `People 2`,
    `Group ID`
FROM ranked_people
GROUP BY `Group ID`
  • 逻辑说明:先用窗口函数给每个组内的成员打1、2的序号,再通过条件聚合把序号1的放到People1列,序号2的放到People2列即可,完全适配每组固定2人的场景。

2. Excel/Power Query 实现

操作步骤:

  • 把数据加载到Power Query编辑器,选中「Group ID」列,点击【分组依据】
  • 分组设置:新列名输入「temp」,操作选「所有行」,点击确定
  • 新增自定义列,公式输入:Table.FromList([temp][People],Splitter.SplitByNothing(),{"Item"})
  • 展开自定义列的表格,给分组内加索引列:选中自定义列的表格,点击【添加列】-【索引列】- 从1开始
  • 透视索引列:选中索引列,点击【转换】-【透视列】,值列选People,聚合函数选不要聚合
  • 最后把列重命名为People 1、People 2即可

3. Python Pandas 实现

代码示例:

import pandas as pd

# 先给同组加序号
df['rn'] = df.groupby('Group ID').cumcount() + 1
# 透视表输出
res = df.pivot(index='Group ID', columns='rn', values='People').reset_index()
# 重命名列
res.columns = ['Group ID', 'People 1', 'People 2']

逻辑和SQL方案一致,处理十万行级数据也没有性能问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 12:45:10