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

使用pd.pivot()/pd.pivot_table()转置DataFrame报错,操作哪里有误?

问题原因

你调用pivot_table时参数使用不符合要求,才会抛出Grouper and axis must be same length错误:

  • pivot_table的index、columns参数需要传入列名字符串,用来指定从哪一列提取值作为行/列索引
  • 你直接传入了df.columns(长度为3)和df.index(长度为5),二者长度不匹配,同时也不符合参数的输入规则,因此触发报错。
解决方案

你的需求本质就是对DataFrame做矩阵转置,直接用pandas内置的转置属性T即可,一行代码就能完成:

df_transposed = df.T

完整示例验证

import pandas as pd

# 构造和你结构一致的示例DataFrame
df = pd.DataFrame(
    data=[
        ["val1", "val1", "val1"],
        ["val2", "val2", "val2"],
        ["val3", "val3", "val3"],
        ["val4", "val4", "val4"],
        ["val5", "val5", "val5"],
    ],
    index=["idx1", "idx2", "idx3", "idx4", "idx5"],
    columns=["item1", "item2", "item3"]
)

# 执行转置
df_transposed = df.T
print(df_transposed)

执行后输出结果完全匹配你需要的结构:

idx1  idx2  idx3  idx4  idx5
item1 val1  val2  val3  val4  val5
item2 val1  val2  val3  val4  val5
item3 val1  val2  val3  val4  val5

补充说明

如果一定要用pivot_table实现也可以,但需要先把宽表转为长表再做透视,属于冗余写法,不推荐:

# 不推荐的冗余写法,仅做原理说明
df_long = df.rename_axis('idx').reset_index().melt(id_vars='idx')
df_transposed = df_long.pivot_table(
    index='variable', 
    columns='idx', 
    values='value', 
    aggfunc='first'
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 17:54:04