码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • BI神器Power Query(26)-- 使用PQ实现表格多列转换(2/3)


    实例需求:原始表格包含多列属性数据,现在需要将不同属性分列展示在不同的行中,att1、att3、att5为一组,att2、att3、att6为另一组,数据如下所示。

    更新表格数据

    原始数据表:

    Col1Col2Att1Att2Att3Att4Att5Att6
    AAADDDXOalphadelta100400
    BBBEEEYPbetavega200500

    结果数据表:

    Col1Col2cn1cn3cn3
    AAADDDXalpha100
    AAADDDOdelta400
    BBBEEEYbeta200
    BBBEEEPvega500

    示例代码:

    let
        Source = Excel.CurrentWorkbook(){[Name="Table1"]}[Content],
        Part1 = Table.CombineColumnsToRecord(Source, "Part1Rec", {"Att1", "Att3", "Att5"}, [DisplayNameColumn="Att1", TypeName="CmbCol"]),
        Part2 = Table.CombineColumnsToRecord(Part1, "Part2Rec", {"Att2", "Att4", "Att6"}, [DisplayNameColumn="Att2", TypeName="CmbCol"]),
        AddTable = Table.AddColumn(Part2, "NewTab", each Table.FromRows({
                Record.FieldValues([Part1Rec]), 
                Record.FieldValues([Part2Rec])
        })),
        RemovedRec = Table.RemoveColumns(AddTable,{"Part1Rec", "Part2Rec"}),
        Output = Table.ExpandTableColumn(RemovedRec, "NewTab", {"Column1", "Column2", "Column3"}, {"cn1", "cn2", "cn3"})
    in
        Output
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    代码解析:
    第2行代码加载源表格,表格名称为Table1。
    第3行代码使用Power Query函数Table.CombineColumnsToRecord将"Att1"、“Att3"和"Att5"合并为一个记录,并设置显示名称为"Att1”。
    第4行代码与第3行代码类似,合并"Att2"、“Att4"和"Att6”。

    在这里插入图片描述

    第5~8行代码使用Table.AddColumn函数创建一个新列"NewTab",其中包含两个记录(Part1Rec和Part2Rec)的表格。

    在这里插入图片描述

    第9行代码使用Table.RemoveColumns函数移除不再需要的Part1Rec和Part2Rec列。
    第10行代码使用Table.ExpandTableColumn函数展开"NewTab"列,以获取分列展示的属性值,并设置列名为"cn1"、“cn2"和"cn3”。

    转换结果如下图所示。

    在这里插入图片描述


    总结:
    使用Power Query函数和操作步骤来实现了将原始表格列数据按照指定规则转换成分列展示的目标格式,使用Table.CombineColumnsToRecord可将多列数据合并到一个记录中。

  • 相关阅读:
    Linux第二课:Ubuntu 操作入门(内含:1Ubuntu 下打开终端+2 Linux 文件属性+3 设置屏幕+4 系统关机与重启+5.文件浏览器)
    Verilog 数据类型
    【C++编程语言】之面向对象的三大特性之一封装
    Vue.extend()实现每个页面弹框
    centos离线安装fastdfs
    window.postMessage - 前端跨域通信
    【计算机视觉 | CNN】Image Model Blocks的常见算法介绍合集(五)
    读取W25Q64的设备ID时输出0xff
    pandas 中的两种数据结构:Series, DataFrame
    如何看待2023年大量劝入C++?
  • 原文地址:https://blog.csdn.net/taller_2000/article/details/133476968
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号