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

Multi-index Pandas DataFrame行转列:按分组将pid转为横向step列

实现方法

你可以通过分组顺序计数+层级展开的方式完成转换,代码如下:

import pandas as pd

# 假设你的原始DataFrame变量名为df
# 1. 按id、vid分组,为分组内的每行生成从1开始的顺序编号(完全保留原有行顺序)
step_seq = df.groupby(level=['id', 'vid']).cumcount() + 1
# 2. 将编号追加为索引的第三层,提取pid列后展开为横向列
res = df.set_index(step_seq, append=True)['pid'].unstack()
# 3. 重命名列名为stepX格式
res.columns = [f'step{i}' for i in res.columns]

如果需要统一补全所有分组到最大步数字段,额外添加以下代码即可:

max_step = res.shape[1]
res = res.reindex(columns=[f'step{i+1}' for i in range(max_step)])

原理说明

  • groupby(level=['id','vid']).cumcount()会严格按照原DataFrame的行顺序给每个分组内的行生成从0开始的序号,完全符合你要求的「原有顺序对应step从左到右」的规则
  • unstack()会自动把缺失的步位填充为NaN,不需要额外处理空值
  • 转换后会保留原有的id、vid两层行索引,和你给出的示例输出结构完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 08:24:01