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

Power BI中如何将按行重复分组的表数据转换为列式结构化表

实现方法

核心思路:你的数据是固定每4行对应一条完整的时间维度指标数据,所以只要先给每一组4行分配相同的分组标识,再做透视就可以完成转换,以下是两种常用场景的实现方案:

Python Pandas 实现

你之前pivot失败是因为缺少分组标识,补充分组后即可正常透视,代码如下:

import pandas as pd
# 假设你的原始数据已经读入为df,列名为Column1、Column2
# 生成每4行一组的分组ID
df['group_id'] = df.index // 4
# 透视转换
df_pivot = df.pivot(index='group_id', columns='Column1', values='Column2').reset_index(drop=True)
# 调整列名顺序和格式(可选)
df_pivot = df_pivot[['Date', 'Mem usage', 'CPU usage', 'Disk usage']]
df_pivot.columns = ['Date', 'Mem Usage', 'CPU Usage', 'Disk Usage']
print(df_pivot)

SQL 实现(MySQL 8.0+/PostgreSQL/SQL Server通用思路)

如果是在数据库中处理,可以先通过窗口函数生成分组ID,再用条件聚合转宽表:

WITH t AS (
    SELECT 
        Column1,
        Column2,
        -- 按行排序后每4行分一组
        FLOOR((ROW_NUMBER() OVER(ORDER BY (SELECT NULL)) -1)/4) AS group_id
    FROM 你的原始表名
)
SELECT 
    MAX(CASE WHEN Column1 = 'Date' THEN Column2 END) AS Date,
    MAX(CASE WHEN Column1 = 'Mem usage' THEN Column2 END) AS `Mem Usage`,
    MAX(CASE WHEN Column1 = 'CPU usage' THEN Column2 END) AS `CPU Usage`,
    MAX(CASE WHEN Column1 = 'Disk usage' THEN Column2 END) AS `Disk Usage`
FROM t
GROUP BY group_id
ORDER BY group_id;

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:18:03