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

如何转置Pandas DataFrame并保留指定列名?

解决方案

原始数据结构

CodeServiceService2Service3
xxy23a44e42e
zzy22c32c32z
rrr21d85a8m

期望转换结果

CodeService
xxy23a
xxy44e
xxy42e
zzy22c
zzy32c
zzy32z
rrr21d
rrr85a
rrr8m

转换代码

使用Pandas的melt方法可快速完成宽格式到长格式的转换,代码如下:

import pandas as pd

data = {'Code':['xxy','zzy', 'rrr'], 
        'Service':["23a","22c","21d"],
        'Service2':["44e", "32c","85a"],
        'Service3':["42e", "32z","8m"],
       }
df = pd.DataFrame(data)

# 执行宽转长转换
df_transformed = df.melt(
    id_vars='Code',  # 保留作为标识的列
    value_vars=['Service', 'Service2', 'Service3'],  # 需要堆叠的列
    value_name='Service'  # 堆叠后值列的名称
).drop(columns='variable')  # 移除自动生成的原列名标识列

# 按Code排序,匹配期望结果的顺序
df_transformed = df_transformed.sort_values('Code').reset_index(drop=True)

print(df_transformed)

代码说明

  • melt是Pandas专门用于宽表转长表的工具函数,通过id_vars指定无需堆叠的标识列,value_vars指定要堆叠的目标列
  • 转换后自动生成的variable列记录原列名,这里不需要该列,因此用drop删除
  • 最后通过sort_values按Code排序,确保结果顺序与示例一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 00:05:15