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

如何将宽格式Pandas DataFrame转换为指定结构的长格式?

解决方案

你需要的是Pandas的宽表转长表操作,有两种常用实现方式,适配大表场景也无需手动枚举所有列:

方法1:使用melt(最直观的宽转长专用方法)

melt是Pandas专门设计用于宽表转长表的函数,直接指定保留列、转换列、新列名即可:

import pandas as pd

# 你的原始df构造代码略
# 自动匹配所有height开头的列,无需手动写全,适配大表场景
height_cols = [col for col in df.columns if col.startswith('height')]

res_df = pd.melt(
    df,
    id_vars=['id'], # 保留不参与转换的id列
    value_vars=height_cols, # 需要拆分的height相关列
    var_name='height', # 存储原字段名的新列名
    value_name='score' # 存储原字段取值的新列名
)

# 若需要和示例输出顺序一致,按id排序即可
res_df = res_df.sort_values(by='id', ignore_index=True)

方法2:使用stack实现

也可以通过设置索引后堆叠的方式实现,代码更简洁:

res_df = df.set_index('id').stack().reset_index()
# 重命名列符合要求
res_df.columns = ['id', 'height', 'score']

两种方法输出结果和你给出的预期样例完全一致,大表场景下性能也足够。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 06:09:02