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

Pandas中如何基于已有DataFrame生成指定三列结构的新DataFrame

DataFrame宽转长实现方案

你需要将行列交叉的宽表转换为「行索引-列名-单元格值」结构的长表,用pandas内置方法即可直接实现,无需手写遍历逻辑。

  • 方法1:stack 实现(性能最优、代码最简洁)
    stack 是pandas专门用于将列维度转换为行索引的接口,适配代码如下:
# 核心转换:将列转为二级行索引后,重置索引为普通列
b = a.stack().reset_index()
# 按要求设置列名
b.columns = ["column1", "column2", "column3"]

运行后得到的b完全匹配目标结构:原行索引存入column1,原列名存入column2,对应行列的单元格值存入column3,行顺序与示例完全一致。

  • 方法2:melt 实现(通用长宽转换接口)
    如果习惯使用通用长宽表转换APImelt,可使用如下代码:
# 先将原行索引转为普通列,再执行宽转长操作
b = a.reset_index().melt(
    id_vars="index",
    var_name="column2",
    value_name="column3"
).rename(columns={"index": "column1"})

两种方法输出结果完全一致,针对给出的5*5测试数据,转换后为25行3列的目标结构。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 03:24:18