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

如何使用Python将数据集的多列表头转换为单独一列?

宽表转长表(逆透视)实现方案

你需要的操作属于典型的宽表转长表(也叫逆透视/Unpivot/融合Melt),以下是两种常用场景的实现方法:

方案1:Python Pandas实现(适合大数据量、自动化场景)

核心调用Pandas内置的melt方法即可完成转换,无需复杂逻辑:

  • 第一步:先识别原始数据中不需要转换的固定维度列(例如批次号、产品编号、测试工位这类非日期列),如果没有特殊固定列可以留空
  • 第二步:执行转换代码,示例如下:
import pandas as pd

# 读取原始数据,支持csv、excel等格式,按需修改读取方法
df = pd.read_csv("原始数据文件路径.csv")

# 填写固定维度列,无则填空列表 []
fixed_cols = ['批次号', '产品型号', '测试组别']

# 执行逆透视转换
res_df = df.melt(
    id_vars=fixed_cols,
    var_name="日期", # 转换后存储日期的列名
    value_name="Yield %" # 转换后存储良率的列名
)

# 可选:将日期列转为标准时间格式,可自定义年份避免混淆
res_df['日期'] = pd.to_datetime(res_df['日期'], format="%m/%d").apply(lambda x: x.replace(year=2024))

# 导出结果
res_df.to_csv("转换后良率长表.csv", index=False)

方案2:Excel Power Query实现(适合小数据量、无代码场景)

用Excel内置的可视化功能即可完成,无需写公式:

  • 选中原始数据区域,点击「数据」选项卡 → 「从表格/区域」,导入Power Query编辑器
  • 按住Ctrl选中所有不需要转换的固定列,右键点击「逆透视其他列」
  • 自动生成的两列默认名称为「属性」、「值」,分别重命名为「日期」、「Yield %」
  • 点击「关闭并上载」即可将转换后的数据导出到Excel工作表

补充说明:如果原始数据的日期列下存在空值,转换后会保留空值行,可根据需求过滤:Python中执行res_df = res_df.dropna(subset=['Yield %']),Excel中直接在Power Query里筛选掉Yield %列的空值即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 01:45:02