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

如何将pandas DataFrame第一列作为列名实现表转置

解决方案

你需要实现的是行列互转的宽表重构需求,无需使用pivot_table,用更轻量的转置方法即可实现,支持动态识别A开头的列、动态适配PRD列的取值,无需硬编码列名。

步骤1:构造示例测试数据(可跳过)

import pandas as pd

# 对应你给出的源DataFrame结构
df = pd.DataFrame({
    'PRD': ['DN', 'AV', 'PVAL'],
    'A1': ['12', 'uy-9', 12.9],
    'A2': ['67-1', 'iu-9', 1.9],
    'A3': ['34', 'uyt', 2.3],
    'A4': ['98', 'tr', 3.9],
    'A5': ['07', 'uytq', 6.9],
    'A6': ['45', 'hbg', 8.0],
    'A7': ['29', 'nba', 12]
})

步骤2:核心转换代码

方法1:直接转置(最简写法)

将PRD列设为索引后直接转置,再重置索引即可得到目标结构,自动适配所有A列和PRD的取值:

res = df.set_index('PRD').T.reset_index(names='PRD')

低版本pandas兼容写法

如果你的pandas版本低于1.5.0,不支持reset_index的names参数,改用以下写法:

res = df.set_index('PRD').T.reset_index()
# 重命名首列,其余列名自动继承PRD的取值无需手动指定
res = res.rename(columns={'index': 'PRD'})

输出验证

转换后的res结构和你需要的目标完全一致:

PRDDNAVPVAL
A112uy-912.9
A267-1iu-91.9
A334uyt2.3
A498tr3.9
A507uytq6.9
A645hbg8.0
A729nba12

补充说明

pivot_table多用于需要对重复值做聚合统计的场景,你的需求本质是纯行列转置,用上面的转置方法性能更高、写法更简单。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 14:15:03