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

如何使用Pandas将含Name/Value列的数据集按行值实现行转列

解决Pandas长格式转宽格式的分组重塑问题

嘿,这个需求很典型,咱们可以用Pandas的分组和数据重塑功能轻松搞定。你的原始数据是长格式(Long Format),每3行对应一组完整的记录(包含code、classe、series三个字段),核心思路是先给每组添加一个分组标识,再把长格式转成宽格式。

具体步骤和代码实现

  1. 导入数据并创建分组索引
    首先我们给每3行数据分配一个唯一的分组ID,这样后续就能把同一组的行合并成一行:

    import pandas as pd
    
    data = [['code',10],['classe',12],['series','B'], ['code',12],['classe',1], ['series','C'],['code',16],['classe',18],['series','A']]
    df1 = pd.DataFrame(data,columns=['Name','Value'])
    
    # 每3行分为一组,生成group_id
    df1['group_id'] = df1.index // 3
    
  2. 用pivot函数转成宽格式
    利用pivot指定行索引、列名和对应的值,就能得到你想要的格式:

    df_result = df1.pivot(index='group_id', columns='Name', values='Value').reset_index(drop=True)
    

验证结果

运行后df_result的输出如下,完全符合你的需求:

code classe series
0    10     12      B
1    12      1      C
2    16     18      A

另一种实现方式(用unstack)

如果你偏好unstack的写法,也可以这样做:

df1['group_id'] = df1.index // 3
df_result = df1.set_index(['group_id', 'Name'])['Value'].unstack('Name').reset_index(drop=True)

这两种方法本质是一样的,都是先分组再重塑,你可以根据自己的习惯选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:27:05