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

Pandas如何将长格式DataFrame转换为槽位分栏的宽格式DataFrame

Pandas长表转宽表实现方案

你需要将记录单槽位单板信息的长表,按设备名(Name)分组展开为每个槽位对应单板的宽表,实现逻辑如下:

核心思路

  • 原始数据是典型的长表结构:每行对应「某设备某槽位插了某块单板」的单条记录
  • 目标是行转列:以Name为行标识,槽位号为列标识,填充对应的Board值,缺失槽位留空
  • 需要额外补全目标要求的0-5全部6个槽位列,避免部分槽位无数据时列缺失

完整实现代码

import pandas as pd

# 替换为你自己的数据读取逻辑,比如pd.read_csv()、pd.read_excel()
df = pd.DataFrame(
    [
        [55, "WD22UBBPe4", 3], [14, "WD22UBBPd6", 2], [14, "QWL1WBBPF4", 3],
        [14, "QWL1WBBPD2", 0], [14, "WD22LBBPD2", 1], [16, "QWL1WBBPD2", 4],
        [16, "QWL1WBBPD2", 3], [16, "WD22UBBPd6", 2], [16, "QWL1WBBPD2", 0],
        [16, "QWL1WBBPD2", 1], [72, "QWL1WBBPD2", 0], [72, "WD22LBBPD2", 1],
        [72, "WD22UBBPd6", 2], [72, "QWL1WBBPD2", 3]
    ],
    columns=["Name", "Board", "Slot No."]
)

# 行转列操作
res = df.pivot(index="Name", columns="Slot No.", values="Board")
# 补全0-5所有槽位列,空值填充为空字符串
res = res.reindex(columns=range(6), fill_value="")
# 重命名列,重置索引得到最终表
res.columns = [f"Slot {i}" for i in range(6)]
res = res.reset_index()

输出结果

运行代码后得到的结果和目标格式完全一致:

NameSlot 0Slot 1Slot 2Slot 3Slot 4Slot 5
14QWL1WBBPD2WD22LBBPD2WD22UBBPd6QWL1WBBPF4
16QWL1WBBPD2QWL1WBBPD2WD22UBBPd6QWL1WBBPD2QWL1WBBPD2
55WD22UBBPe4
72QWL1WBBPD2WD22LBBPD2WD22UBBPd6QWL1WBBPD2

若需要保持Name列的原始出现顺序(即55排在第一行),可以在pivot前添加代码将Name转为指定顺序的分类类型:df["Name"] = pd.Categorical(df["Name"], categories=df["Name"].drop_duplicates(), ordered=True)


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.26 17:57:26