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

Python中pandas DataFrame如何实现列转行(宽表转长表)?

实现方案

你可以直接使用pandas内置的melt函数完成逆透视(列转行)操作,这是处理这类需求最简洁的方法:

完整代码

import pandas as pd

# 构造示例数据
data = [['0092', 'ab', '0', '1', '2'], ['887', 'cd', '4', '2', '1'], 
        ['776', 'ef', '2', '1', '3'] ]
df = pd.DataFrame(data, columns = ('id', 'name', 'W', 'S', 'O'))

# 列转行操作
long_df = df.melt(
    id_vars=['id', 'name'],  # 保留不需要转换的固定列
    value_vars=['W', 'S', 'O'],  # 指定需要转为行的列
    var_name='div',  # 存储原列名的新列名
    value_name='category'  # 存储原列对应值的新列名
)

# 可选步骤:保持和示例输出完全一致的行顺序
long_df = long_df.sort_values(by=['id', 'name']).reset_index(drop=True)

print(long_df)

输出结果验证

运行后得到的结果和需求完全匹配:

id name category div
0  0092   ab        0   W
1  0092   ab        1   S
2  0092   ab        2   O
3   887   cd        4   W
4   887   cd        2   S
5   887   cd        1   O
6   776   ef        2   W
7   776   ef        1   S
8   776   ef        3   O

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.12 07:18:03