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

如何按分组变量将Pandas DataFrame转换为多列宽格式?

Pandas按分组将DataFrame转为指定宽格式的实现方法

针对分组内数据行数不一致的转宽格式需求,可以通过添加组内序号+多级列unstack的方式实现,具体步骤如下:

1. 准备示例数据

先还原原始DataFrame:

import pandas as pd

df = pd.DataFrame({
    'Group_var': [1, 1, 2, 3, 3, 3],
    'type': [11, 12, 22, 33, 34, 35],
    'value': [111, 111, 222, 333, 334, 335]
})

2. 添加组内序号

给每个Group_var分组内的行标记顺序(从1开始),这是实现动态列名的关键:

df['seq'] = df.groupby('Group_var').cumcount() + 1

处理后的数据会新增seq列,每个分组内的行依次标记为1、2、3...

3. 转换为宽格式

通过设置索引+unstack实现行转列,再调整列名格式:

# 设置多级索引并unstack,将seq的行转为列
result = df.set_index(['Group_var', 'seq']).unstack()
# 重命名列,将多级列名(如('type',1))转为type_1格式
result.columns = [f'{col[0]}_{col[1]}' for col in result.columns]
# 重置索引,让Group_var回到列的位置
result = result.reset_index()
# 将空值填充为空字符串,匹配示例格式
result = result.fillna('')

最终结果

执行上述代码后,result的输出即为期望的格式:

Group_var type_1 value_1 type_2 value_2 type_3 value_3
0          1     11     111     12     111              
1          2     22     222                            
2          3     33     333     34     334     35     335

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 10:28:13