如何使用Pandas实现DataFrame结构转换得到目标格式表格
Pandas长表转指定宽表结构实现方案
你使用transpose()无法得到目标结果,是因为该方法仅做DataFrame的整体行列翻转,不支持按指定维度拆分重组数据。该需求属于典型的长表转宽表透视场景,直接使用pandas内置的pivot方法即可实现,操作步骤如下:
- 首先构造对应原始DataFrame,和描述的4条数据完全一致:
import pandas as pd df = pd.DataFrame({ 'A': ['first', 'second', 'first', 'second'], 'type': ['B', 'B', 'C', 'C'], 'val': [20, 30, 200, 300] })
- 调用
pivot方法完成结构转换,三个核心参数分别匹配需求:index指定作为行标识的列,columns指定取值作为新列名的列,values指定用来填充表格的数值列,最后用reset_index()把作为行索引的A列还原为普通列:
df_result = df.pivot( index='A', columns='type', values='val' ).reset_index()
- 运行后得到的输出完全匹配目标结构:
type A B C 0 first 20 200 1 second 30 300
特殊场景适配
- 如果原始数据存在同一个
A+type组合对应多条val记录的情况,pivot会触发重复值报错,此时可替换为pivot_table方法,指定聚合规则即可,比如对重复值求和的示例代码:
df_result = df.pivot_table( index='A', columns='type', values='val', aggfunc='sum' ).reset_index()
内容的提问来源于stack exchange,提问作者mirkap
相关产品推荐
相关产品推荐

