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

Python中如何转换pandas DataFrame格式实现长表转宽表

实现方法

你这个需求属于长表转宽表的场景,不能直接用transpose()转置,需要先给同name的每行分配对应新表的grade序号,再用透视表实现:

完整可运行代码

import pandas as pd

# 构造原始DataFrame
data = {
    "grade": [1,1,1,2,2,2,3,3,3],
    "name": ["abc","abc","abc","xyz","xyz","xyz","mno","mno","mno"],
    "price": [25,30,35,40,45,50,55,60,65]
}
df = pd.DataFrame(data)

# 第一步:给每个name分组内添加行号,该序号就是新表的grade值
df['new_grade'] = df.groupby('name').cumcount() + 1

# 第二步:通过透视表完成格式转换
df_pivot = df.pivot(index='new_grade', columns='name', values='price').reset_index()

# 第三步:调整列名,移除columns的默认名称
df_pivot = df_pivot.rename(columns={'new_grade': 'grade'}).rename_axis(columns=None)

# 可选:如果需要固定列顺序为grade、abc、xyz、mno,添加下行即可
# df_pivot = df_pivot[['grade', 'abc', 'xyz', 'mno']]

print(df_pivot)

输出结果

grade  abc  xyz  mno
0      1   25   40   55
1      2   30   45   60
2      3   35   50   65

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 08:54:04