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

如何不使用聚合函数将DataFrame行转为多列实现转置

无聚合实现DataFrame分组行转多列方案

你要实现的分组行展开为多列的操作不需要依赖任何聚合函数,核心是先给同组数据打组内序号,再做维度旋转即可,具体实现步骤如下:

  • 首先构造原始测试数据
import pandas as pd

df = pd.DataFrame({
    'Type': ['A', 'A', 'B', 'B'],
    's': [1, 2, 4, 5],
    'h': [4, 5, 7, 2]
})
  • 给每个Type分组内的行生成从1开始的递增序号,这一步是逐行计数,不涉及聚合
df['seq'] = df.groupby('Type').cumcount() + 1
  • 调整表结构做维度旋转,把序号维度从行转到列,全程无聚合计算
# 设置多层索引,保留Type为行维度,seq作为待展开的列维度
df = df.set_index(['Type', 'seq'])
# 旋转维度,将seq对应的行展开为列
df = df.unstack('seq')
# 调整列名,拼接为「原列名_序号」的格式
df.columns = [f'{col}_{seq}' for col, seq in df.columns]
# 将Type从索引还原为普通列
df = df.reset_index()

执行完成后得到的结果完全匹配目标结构:

Types_1h_1s_2h_2
A1425
B4752

说明:该方案会自动适配每个Type分组下的行数,如果某组有n条记录,会自动生成对应s_1s_n、h_1h_n的列,不需要提前预设分组大小。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 11:36:21