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

如何用Pandas处理Excel多级表头实现列转行得到预期输出

错误原因
  • 读取Excel文件时未指定多级表头参数,无法正确识别表格前两行的两级列名结构,导致列名和数据对应关系混乱
  • 未将第一列的学生名正确识别为索引/普通列,原代码中reset_index的使用方式不符合当前数据结构要求
修正后完整代码
import pandas as pd

# 读取时指定前两行为多级表头,第一列为索引列
df = pd.read_excel('test.xlsx', header=[0, 1], index_col=0)
# 将学生名索引转为普通列,列名设为Student
df = df.reset_index(names='Student')

# 逆透视转换,直接指定value列名避免后续重命名
dfs = pd.melt(
    df,
    id_vars=['Student'],
    value_vars=['$', '%', '#'],
    col_level=1,
    var_name='Symbol',
    value_name='Marks'
)

# 按学生名排序,匹配需求的输出顺序
dfs = dfs.sort_values('Student', ignore_index=True)
print(dfs)
代码说明
  • header=[0,1]:指定Excel的第1、2行作为两级列名,第一级是主列名Marks,第二级是子列名$/%/#
  • index_col=0:将第一列的学生名识别为索引,避免被识别为普通数值列
  • 最后的排序步骤是因为pd.melt默认会按Symbol分组输出(所有$的行在前、再是%、再是#),排序后可以按学生分组输出,和要求的格式完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 09:06:01