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

如何将DataFrame按id1分组并实现行转列?

实现方法

可以通过Pandas的pivot方法结合列名调整来实现需求,步骤如下:

  1. 构造示例DataFrame(如果已有数据可跳过此步):
import pandas as pd

data = {
    'id1': ['a1', 'a1', 'a1', 'k1', 'k1', 'k1'],
    'id2': ['a2', 'b2', 'c2', 'p2', 'f2', 'd2'],
    'val': [10, 11, 9, 6, 5, 2],
    'type': ['a', 'b', 'c', 'a', 'b', 'c']
}
df = pd.DataFrame(data)
  1. 执行透视操作:
    使用pivot将id1作为行索引,type作为列维度,同时对id2和val两个字段进行透视:
pivoted = df.pivot(index='id1', columns='type', values=['id2', 'val'])
  1. 合并多层列名:
    透视后会生成多层列名(如('id2', 'a')),将其合并为预期的id2_a格式:
pivoted.columns = pivoted.columns.map(lambda x: f'{x[0]}_{x[1]}')
  1. 重置索引并调整列顺序:
    将id1从索引转为普通列,并调整列的顺序与预期结果一致:
result = pivoted.reset_index()
result = result[['id1', 'id2_a', 'val_a', 'id2_b', 'val_b', 'id2_c', 'val_c']]

执行后输出的result即为目标格式:

id1 id2_a  val_a id2_b  val_b id2_c  val_c
0  a1    a2     10    b2     11    c2      9
1  k1    p2      6    f2      5    d2      2

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 00:10:37