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

如何使用Python将宽格式Excel表格转换为长格式?

将宽格式Excel数据转换为长格式(Python实现)

问题描述

现有Excel工作表数据格式如下(日期为表头列):

RESOURCENAME        RESOURCETYPENAME    8/13/2022   8/6/2022    7/30/2022   7/23/2022   7/16/2022   7/9/2022    7/2/2022

LASTNAME:FIRSTNAME1 3P          41      43      45      41      42      40      44

LASTNAME:FIRSTNAME2 FTE         50      42      41      46      48      41      42  

LASTNAME:FIRSTNAME3 FTE         40      42      41      41      41      40      40  

LASTNAME:FIRSTNAME4 FTE         40      43      44      41      42      41      42  

需要转换为以下长格式:

RESOURCENAME        RESOURCETYPENAME    DATE        HOURS
LASTNAME:FIRSTNAME1 3P          8/13/2022   41
LASTNAME:FIRSTNAME1 3P          8/6/2022    43
LASTNAME:FIRSTNAME1 3P          7/30/2022   45
LASTNAME:FIRSTNAME1 3P          7/23/2022   41
LASTNAME:FIRSTNAME1 3P          7/16/2022   42
LASTNAME:FIRSTNAME1 3P          7/9/2022    40
LASTNAME:FIRSTNAME1 3P          7/2/2022    44
LASTNAME:FIRSTNAME2 FTE         8/13/2022   50
LASTNAME:FIRSTNAME2 FTE         8/6/2022    42
LASTNAME:FIRSTNAME2 FTE         7/30/2022   41
LASTNAME:FIRSTNAME2 FTE         7/23/2022   46
LASTNAME:FIRSTNAME2 FTE         7/16/2022   48
LASTNAME:FIRSTNAME2 FTE         7/9/2022    41
LASTNAME:FIRSTNAME2 FTE         7/2/2022    42
...

解决方案

用Python的pandas库可以快速完成这种宽表转长表的操作,步骤如下:

1. 依赖安装(未安装时执行)

在终端运行以下命令安装所需库:

pip install pandas openpyxl
  • openpyxl用于读取.xlsx格式文件,若处理.xls格式则替换为xlrd。

2. 代码实现

import pandas as pd

# 读取Excel文件,替换为你的文件路径和工作表名
df = pd.read_excel('resource_hours.xlsx', sheet_name='Sheet1')

# 执行宽表转长表操作
df_long = pd.melt(
    df,
    id_vars=['RESOURCENAME', 'RESOURCETYPENAME'],  # 保持不变的标识列
    var_name='DATE',  # 原日期表头转为新列名
    value_name='HOURS'  # 原日期对应数值转为新列名
)

# 可选:按资源名称和日期排序,让结果更规整
df_long = df_long.sort_values(by=['RESOURCENAME', 'DATE'])

# 将结果保存为新Excel文件,不保留索引列
df_long.to_excel('resource_hours_long.xlsx', index=False)

# 打印查看转换后的结果
print(df_long)

关键说明

  • pd.melt()是pandas专门用于宽表转长表的工具函数,核心参数作用:
    • id_vars:指定转换过程中每行保留不变的列;
    • var_name:定义原表头(日期)转换后的新列名称;
    • value_name:定义原表头对应数值转换后的新列名称。
  • 执行代码后会生成符合要求的长格式Excel文件,也可以通过print直接查看转换结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 06:22:46