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

Python Pandas如何将按ID分组的长格式DataFrame转换为目标宽格式

Pandas DataFrame 格式转换方案

你需要实现的是按ID分组将组内多条记录横向展开为多列的转换操作,可通过pandas原生向量化操作实现,性能足以适配大批量数据处理场景,具体实现代码如下:

首先导入依赖并构造示例数据:

import pandas as pd

# 示例数据构造
data = {'ID' : [1,1,1,2,2,2,2],
        'Name' : ['OO', 'XX', 'YY','ZZ', 'MM', 'VV', 'RR'],
         'Rank' : [5,6,7,8,9,10,11],
         'Price' : [20,30,40,50,60,70,80]}
df = pd.DataFrame(data)

核心转换代码

# 1. 为每个ID分组内的记录生成序号
df['group_idx'] = df.groupby('ID').cumcount() + 1

# 2. 复合索引后展开为宽表
df_wide = df.set_index(['ID', 'group_idx']).unstack(level='group_idx')

# 3. 合并多层列名为单层级命名
df_wide.columns = [f'{col[0]}_{col[1]}' for col in df_wide.columns]

# 4. 重置索引将ID恢复为普通列
df_wide = df_wide.reset_index()

转换后结果和目标格式完全匹配。

批量处理适配说明

  • 上述实现全部为pandas原生向量化操作,无自定义循环,处理百万行级数据无性能压力
  • 读取大体积Excel文件时,可配合pd.read_excel的chunksize参数分块读取处理,避免内存溢出
  • 若不同ID对应的记录数量不一致,转换后缺失的字段会自动填充NaN,无需额外适配

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:15:01