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

Pandas pivot/melt操作丢失index问题求助

解决pivot后melt丢失subject列的问题

问题原因

执行pd.pivot后,subject被设为DataFrame的索引,而默认调用melt()时不会将索引作为数据列保留,因此转换后丢失了subject信息。

解决方法

方法1:先重置索引为普通列,再执行melt

将索引subject转为普通列后,通过id_vars指定要保留的标识列,确保subject不会被融合:

# 把索引转为普通列
pivoted_reset = pivoted.reset_index()
# 执行melt,指定标识列、列名映射
pivotedBack = pivoted_reset.melt(
    id_vars="subject",
    var_name="when",
    value_name="sbp"
)
# 可选:按原数据的subject排序(和原表结构更接近)
pivotedBack = pivotedBack.sort_values("subject").reset_index(drop=True)

方法2:melt时保留索引,再转换为列

利用ignore_index=False参数保留索引,之后再将索引转为普通列:

# melt时保留索引,自定义列名
pivotedBack = pivoted.melt(
    ignore_index=False,
    var_name="when",
    value_name="sbp"
)
# 把索引转为subject列,重置索引
pivotedBack = pivotedBack.reset_index().rename(columns={"index": "subject"})
# 可选排序
pivotedBack = pivotedBack.sort_values("subject").reset_index(drop=True)

验证结果

执行上述任意方法后,pivotedBack会恢复包含所有列的结构(示例结果):

subject    when  sbp
0     BHO  before  160
1     BHO   after  160
2     GWB  before  115
3     GWB   after  135
4     WJC  before  105
5     WJC   after  145

(注:原表行顺序可通过额外排序调整,核心是保留了所有关键列信息)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 13:42:43