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

如何将Pandas DataFrame列标题转换为索引并重塑数据结构

Pandas DataFrame 结构重塑方法

原始数据结构

详情项人员1人员2人员3
姓名SteveLarryDave
年龄455667
爱好RunningSkatingPainting

目标数据结构

人员姓名年龄爱好
人员1Steve45Running
人员2Larry56Skating
人员3Dave67Painting

实现方法

方法一:转置+重置索引(简单直接)

适配当前的简单结构,代码量少:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    '详情项': ['姓名', '年龄', '爱好'],
    '人员1': ['Steve', '45', 'Running'],
    '人员2': ['Larry', '56', 'Skating'],
    '人员3': ['Dave', '67', 'Painting']
})

# 核心转换步骤
result = df.set_index('详情项').T.reset_index()
# 重命名列以匹配目标结构
result.columns = ['人员', '姓名', '年龄', '爱好']

print(result)

步骤说明:

  • set_index('详情项'):将"详情项"列设为索引,为转置做准备
  • .T:对DataFrame进行行列转置
  • reset_index():把转置后的原列名(人员1/2/3)转为普通列
  • 最后重命名列,对齐目标结构的字段名

方法二:melt+pivot组合(扩展性强)

如果后续数据结构更复杂,这种方法能应对更多场景:

import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    '详情项': ['姓名', '年龄', '爱好'],
    '人员1': ['Steve', '45', 'Running'],
    '人员2': ['Larry', '56', 'Skating'],
    '人员3': ['Dave', '67', 'Painting']
})

# 第一步:转成长格式数据
melted = df.melt(id_vars='详情项', var_name='人员', value_name='值')
# 第二步:转回宽格式数据
result = melted.pivot(index='人员', columns='详情项', values='值').reset_index()
# 清理列名层级
result.columns.name = None
# 调整列顺序(确保和目标结构一致)
result = result[['人员', '姓名', '年龄', '爱好']]

print(result)

步骤说明:

  • melt():把多列人员数据拆分为"人员"和"值"的长格式,方便后续重组
  • pivot():以"人员"为行索引,"详情项"为列,将"值"填充到对应位置
  • 最后清理列名层级并调整列顺序,匹配目标结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 07:46:00