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

如何将数据表转换为Pivot Table或Matrix Table(无循环实现)

无循环实现数据表转透视表/矩阵表的方案

以下是几种无需循环的实现方式,覆盖Python、SQL和Excel工具场景:

1. Python Pandas 实现

利用Pandas内置的pivot方法直接完成转换,全程无需循环:

import pandas as pd

# 构造源数据DataFrame
source_data = [
    ["8/4/2023", "Team 01", "S", 10],
    ["8/4/2023", "Team 02", "M", 20],
    ["8/4/2023", "Team 03", "L", 30],
    ["8/5/2023", "Team 01", "M", 40],
    ["8/5/2023", "Team 02", "M", 50]
]
df = pd.DataFrame(source_data, columns=["Date", "TeamNo", "Size", "Qty"])

# 执行透视转换
pivot_result = df.pivot(
    index=["TeamNo", "Size"],
    columns="Date",
    values="Qty"
).reset_index()

# 清理列名层级
pivot_result.columns.name = None

# 输出结果(与目标结构一致)
print(pivot_result)

转换后缺失的数值会自动填充为NaN,对应需求中的null。

2. SQL 实现(以MySQL为例)

通过条件聚合实现,无需循环逻辑:

SELECT
    TeamNo,
    Size,
    MAX(CASE WHEN Date = '8/4/2023' THEN Qty ELSE NULL END) AS `8/4/2023`,
    MAX(CASE WHEN Date = '8/5/2023' THEN Qty ELSE NULL END) AS `8/5/2023`
FROM your_table_name
GROUP BY TeamNo, Size
ORDER BY TeamNo, Size DESC;
  • 核心逻辑是按TeamNo和Size分组,用CASE WHEN筛选对应日期的Qty值
  • MAX函数用于确保分组后仅保留唯一有效数值,缺失值自动填充NULL
  • 若日期是动态的,MySQL 8.0+可结合动态SQL生成列名

3. Excel 可视化操作实现

无需代码,用Excel内置透视表功能一键转换:

  1. 选中源数据区域,点击「插入」→「数据透视表」
  2. 将TeamNo和Size拖到「行」区域
  3. 将Date拖到「列」区域
  4. 将Qty拖到「值」区域,值字段设置为「求和」(因单组仅一个值,求和等价于取数)
  5. 调整行排序,即可得到与目标一致的矩阵表,缺失值自动显示为空

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 02:10:55