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

Pandas DataFrame宽表转长表:转置追加及拆分日期颜色列实现咨询

方案选型结论

你提到的pivot_table和transpose都不适合这个场景:

  • pivot_table是用于长表转宽表的工具,和你当前宽表转长表的需求刚好相反
  • transpose只是单纯交换行和列,后续还需要额外处理字段拆分、固定列重复对齐的问题,操作冗余易出错
    这个场景最优的解法是使用Pandas专门用于宽表转长表的melt方法,实现步骤如下:
实现步骤
  1. 宽表转长表:固定Name、Type为保留列,把其余日期+颜色的列转为行
  2. 拆分复合字段:把转置后得到的日期+颜色复合列,按分隔符, 拆分为独立的Date和Color列
  3. 调整列顺序:按你需要的输出结构调整列的顺序即可
完整可运行代码
import pandas as pd

# 构造原始DataFrame
df = pd.DataFrame({
    'Name': ['A','B','C'], 
    'Type': ['Car', 'Car', 'Truck'], 
    '01/01/1991, RED': [10, 26, 30], 
    '01/02/1991, YELLOW': [11,15,5], 
    '01/05/1991, BLUE':[5,8,20]
})

# 1. 宽转长
df_long = df.melt(
    id_vars=['Name', 'Type'], 
    var_name='date_color', 
    value_name='Number'
)

# 2. 拆分日期和颜色字段
df_long[['Date', 'Color']] = df_long['date_color'].str.split(', ', expand=True)

# 3. 调整列顺序、按要求排序
df_result = df_long[['Name', 'Date', 'Type', 'Color', 'Number']].sort_values(
    by=['Name', 'Date'], 
    ignore_index=True
)

print(df_result)

运行后输出的结果和你要求的结构完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.06 16:24:02