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

使用Python对全数据集进行透视,将指定列转为分类取值的实现咨询

解决方案

你需要实现的是宽表转长表的逆透视操作,和你参考的pivot(长表转宽表)功能正好相反,用pandas的pd.melt()方法即可实现:

import pandas as pd

# 逆透视转换
result = pd.melt(
    df,
    # 不需要转换、原样保留的列
    id_vars = ["id", "date", "ppp", "base", "final", "final2"],
    # 需要展开为type分类的原列名
    value_vars = ["sun", "moon", "stars"],
    # 生成的分类列的列名
    var_name = "type",
    # 存储原sun/moon/stars对应取值的列名,不需要可后续删除
    value_name = "val"
)

# 删掉不需要的val列,调整列顺序和你预期完全一致
result = result.drop(columns=["val"])[["id", "date", "type", "ppp", "base", "final", "final2"]]

如果你后续需要从转换后的长表转回原始宽表,才需要用到pivot方法,示例如下:

# 长表转宽表还原原始数据
ori_df = result.pivot(
    index = ["id", "date", "ppp", "base", "final", "final2"],
    columns = "type",
    values = "val"
).reset_index()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 15:30:03