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

如何将DataFrame多列堆叠为一列并填充列标题

解决方法:使用melt实现宽表转长表

你的需求是将多颜色列转换为单个Color列并保留对应日期,这是典型的宽表转长表场景,pandas.melt()是最直接高效的实现方式,比stack或concat更简洁。

步骤示例

  1. 先构造原始DataFrame(如果已有可跳过):
import pandas as pd

data = {
    'Date': ['1/1/14', '1/2/14', '1/3/14', '1/4/14'],
    'Blue': [55, 36, 23, 47],
    'Red': [34, 35, 46, 34],
    'Green': [34, 23, 43, 55]
}
df = pd.DataFrame(data)
  1. 用melt重塑数据:
# 核心转换:保留Date,将颜色列转为Color行
result = df.melt(
    id_vars='Date',       # 指定保留的关联列
    value_vars=['Blue', 'Red', 'Green'],  # 指定要转换的目标列
    var_name='Color'      # 设置转换后的列名
)

# 移除不需要的数值列(匹配你要的结果结构)
result = result.drop(columns='value')

# 按Color排序,和目标结果顺序一致(可选)
result = result.sort_values('Color').reset_index(drop=True)

最终结果

运行后得到的DataFrame结构完全符合需求:

Date   Color
0   1/1/14    Blue
1   1/2/14    Blue
2   1/3/14    Blue
3   1/4/14    Blue
4   1/1/14    Green
5   1/2/14    Green
6   1/3/14    Green
7   1/4/14    Green
8   1/1/14    Red
9   1/2/14    Red
10  1/3/14    Red
11  1/4/14    Red

关于其他方法的说明

  • stack:也能实现,但需要先将Date设为索引,操作步骤更繁琐,适合处理层级索引场景,没必要用在这个简单需求上。
  • concat:需要手动为每个颜色构造单独的DataFrame再合并,代码冗余,效率低,不推荐。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.09 00:02:32