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

如何对Pandas DataFrame按ID分组转置生成动态增量表头且不聚合

Pandas 按ID分组转置Value列实现方法

核心逻辑

按ID分组后给组内每条数据生成递增序号,以此为新列名后缀做宽表转换,全程无聚合运算,完全保留原始Value值。

完整实现代码

import pandas as pd

# 构造原始DataFrame
data = {'ID': ['A', 'B', 'B', 'B', 'C', 'C', 'D', 'D', 'D', 'D'],
        'Value': [30, 760, 740, 755, 1 ,4, 56, 34, 76, 12]}
df = pd.DataFrame(data, columns=['ID',  'Value'])

# 1. 为每个ID分组内的记录生成从1开始的递增序号
df['col_suffix'] = df.groupby('ID').cumcount() + 1

# 2. 透视转换为宽表
res = df.pivot(index='ID', columns='col_suffix', values='Value').reset_index()

# 3. 重命名列名符合要求
res.columns = ['ID'] + [f'Value{idx}' for idx in res.columns[1:]]

# 可选:空值替换为空字符串,和示例输出格式完全一致
res = res.fillna('')

输出结果

打印res即可得到预期格式:

ID Value1 Value2 Value3 Value4
0  A     30
1  B    760    740    755
2  C      1      4
3  D     56     34     76     12

如果你后续需要对Value列做数值计算,去掉最后一步fillna('')即可,缺失位置会保留NaN格式,不影响数值运算。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 18:48:03