求助:如何使用Python Pandas实现特定列的转置操作
Pandas 实现特定列转置(保留固定列)
根据需求,核心是保留固定标识列,将指定多列(如季度列)转置为行结构并对应数值,可通过Pandas的melt函数快速实现:
步骤1:导入依赖
import pandas as pd
步骤2:构造/读取输入数据
以你提供的格式为例,构造示例数据:
df = pd.DataFrame({ "ID": [1, 2], "Name": ["Alice", "Bob"], "Subject": ["Math", "Science"], "Q1": [85, 78], "Q2": [90, 82], "Q3": [88, 80], "Q4": [92, 85] })
步骤3:转置特定列
使用melt函数,指定需要保留的列和需要转置的列:
transposed_df = df.melt( id_vars=["ID", "Name", "Subject"], # 保留为列的固定字段 value_vars=["Q1", "Q2", "Q3", "Q4"], # 需要转置的列 var_name="Quarter", # 转置后原列名对应的新列名 value_name="Score" # 转置后原列值对应的新列名 )
输出结果
运行后得到的结果与期望格式一致:
ID Name Subject Quarter Score 0 1 Alice Math Q1 85 1 2 Bob Science Q1 78 2 1 Alice Math Q2 90 3 2 Bob Science Q2 82 4 1 Alice Math Q3 88 5 2 Bob Science Q3 80 6 1 Alice Math Q4 92 7 2 Bob Science Q4 85
灵活调整
- 如果固定列或需转置的列名不同,直接修改
id_vars和value_vars中的列表即可。 - 如需按ID和季度排序,可添加:
transposed_df = transposed_df.sort_values(["ID", "Quarter"])
内容的提问来源于stack exchange,提问作者Soumya Ranjan Moharana
相关产品推荐
相关产品推荐

