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

Pandas遍历行列获取行列值对 宽表转x/y/z三列长表实现方法问询

Pandas宽表转长表解决方案

你需要实现的是Pandas标准的宽表转长表重塑操作,无需手动遍历行列,使用内置的优化方法即可零丢失完成转换,同时性能远高于自行遍历的实现。

方法1:使用stack方法(最简洁)

stack会自动将列名转为二级行索引,重置索引后直接重命名列即可得到目标结构:

import pandas as pd
# 构造示例中的原DataFrame
df = pd.DataFrame(
    data=[[10, 15, 20], [11, 16, 21], [12, 17, 22]],
    index=[1, 2, 3],
    columns=[1, 2, 3]
)
# 重塑操作
result = df.stack().reset_index()
# 重命名列符合需求
result.columns = ['x', 'y', 'z']

方法2:使用melt方法(逻辑更直观)

melt是专门的宽转长方法,参数语义明确,更便于理解:

result = df.reset_index().melt(
    id_vars='index',
    var_name='y',
    value_name='z'
).rename(columns={'index': 'x'}).sort_values('x').reset_index(drop=True)

注意:不建议使用手动遍历行/列的方式实现该需求,Pandas内置的重塑方法为向量化优化实现,数据量越大性能优势越明显,同时能避免手动编码可能出现的数值遗漏、顺序错误等问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 02:45:03