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

如何将pandas groupby unstack生成的透视宽表还原为原始长表结构

解决方法

你遇到的报错是因为melt方法默认只会从普通列中查找id_vars指定的字段,而你的store_id和item_id属于多级索引,不在普通列范围内。有两种常用方案可以实现需求:

方案1:先重置索引再使用melt

先调用reset_index()将多级索引转为普通列,再执行你原本的melt逻辑即可:

long_df = df.reset_index().melt(
    id_vars=["store_id", "item_id"],
    var_name="week",
    value_name="sales"
)

这种方法兼容性强,适用所有带多级索引的宽表转长表场景。

方案2:直接用stack逆操作还原

因为你之前是通过unstack得到的宽表,直接用它的逆操作stack就能快速还原长表,代码更简洁、执行效率更高:

long_df = df.stack().reset_index(name="sales")

执行后reset_index会自动把多级索引(store_id、item_id、week)转为普通列,同时指定堆叠后的销量列名为sales。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 05:06:03