当前位置: 首页 > news >正文

[Power Query] 数据的拆分、提取与合并

在数据整理阶段,经常需要对数据进行拆分、提取与合并

【转换】和【添加列】选项卡都有拆分列、合并列以及提取功能

两者的区别在于执行【转换】选项卡中的提取和合并列操作后,原列不保留;执行【添加列】选项卡中的提取和合并列操作后,原列保留,生成新的列

1.数据拆分

数据的拆分是指将一列的内容拆分到多列中

注意:不是所有的数据都可以拆分,拆分的依据是按照特定分隔符或字符数,适用于拆分具有一定排列规律的字符串,方便用户对数据进行二次分类,便于后续的数据分析使用

【转换】|【拆分列】选项下各项操作如下所示

当点击【按分隔符】拆分时,会弹出"按分隔符拆分列"命令窗口

1.选择或输入分隔符

指定按什么标准对数据进行拆分,默认提供了5种分隔符:冒号、逗号、等号、分号和空格。如果数据列中没有上述分隔符,我们可以自定义分隔符,如输入竖线、星号、破折号、斜线等不同类型的符号

2.拆分位置

用来指定数据提取方式

①最左侧的分隔符

从当前列最左侧字符开始,当指定的分隔符第一次出现时,就对当前文本以分隔符为界定拆分成两个数据列

②最右侧的分隔符

从当前列最右侧字符开始,当指定的分隔符第一次出现时,就对当前文本以分隔符为界定拆分成两个数据列

③每次出现分隔符时

可以将当前文本列拆分成多列,即每出现一次分隔符,其左右两边的文本就会被拆分,然后独立存储在相对应的数据列中

3.高级选项

①拆分为列

拆分出来的文本数据将以列的方式进行存储(默认)

②拆分为行

拆分出来的数据会作为新的行插入当前文本列中

4.引号字符

仅仅对CSV类型文件起作用

CSV文件是一种字符分隔符文件,对于列中数据的存储有一个规定,如果某一行数据包括空格、双引号、逗号等特殊字符,就需要在该字符串外围使用一对双引号进行包裹,CSV文件中的引号字符会被作为字符分隔符舍弃掉,不做保留

5.使用特殊字符进行拆分

如果需要按照<Tab>键、回车符、换行和不间断空格对数据进行拆分,可以选择此项

练习案例

数据源

问题:将"店铺"字段拆分成城市和店铺名称两个字段

具体操作步骤如下所示

步骤1:在Power Query中,选中"店铺"列,选择【添加列】|【重复列】选项,复制店铺列

步骤2:选中"店铺-复制"列,选择【转换】|【拆分列】|【按字符数】选项,输入字符数2,选择拆分模式"一次,尽可能靠左",单击【确定】按钮

步骤3:拆分后的字段将城市和店铺名称分为两列,双击列名称可以分别自定义修改列名为"城市"和"店铺名"

2.数据提取

数据的提取是指从文本数据中提取某些需要的字符,可按照长度、首字符、结尾字符、范围等方式来提取字符

注意:提取字符操作之前,要检查数据类型是否是文本型,日期型数据是无法提取的

选择方式具体含义
长度提取字符串长度
首字符从左开始提取
结尾字符从右开始提取
范围从中间开始提取
分隔符(之前/之后/之间)的文本提取分隔符控制的文本位置

练习案例

数据源

问题:对"销售单编号"列提取年月日信息 

具体操作步骤如下所示

步骤1:在Power Query查询编辑器中,选中"销售单编号"列,检查数据类型是否为文本

步骤2:选择【添加列】|【提取】|【范围】选项,输入起始索引值9(起始索引为要提取的字符前面的字符数),字符数为10(年月日中间的反斜线/也包含在内),单击【确定】按钮

步骤3:将提取的年月日字段名修改为"日期",将数据类型修改为日期型,最终呈现结果如下所示

3.数据合并

数据的合并是将多列数据合并到一列中

在Power Query中选择需要合并的列,然后在选项卡中单击【合并列】,弹出"合并列"对话框,可以设置合并列之间的分隔符

注意:如果选择【转换】选项卡中的【合并列】,原列将被删除;如果选择【添加列】选项卡中的【合并列】,原列将被保留

练习案例

数据源

问题:将"城市"列和"店铺名"列合并,横线作为分隔符

选择【添加列】|【合并列】选项,弹出"合并列"命令窗口,分隔符下选择"自定义",下一行填写"-",点击【确定】按钮

合并结果如下图所示

相关文章:

  • Linux实用指令
  • 抖音短视频实操:矩阵号之为什么要做矩阵号和如何做矩阵号(中)
  • ES6(ECMASript 6 新特性---数值扩展,对象扩展,模块化)
  • 大数据专业毕业后职业前景如何?
  • Spring Boot 内置工具类应有尽有 建议收藏
  • TCP/IP协议专栏——IP 详解——网络入门和工程维护必看
  • VAPS XT开发入门教程05:预览与状态机
  • 第01章 第01章 数据结构基础和算法简介
  • SpringCloud和SpringCloudAlibaba的区别
  • 【C语言基础】Chap. 2. 基本概念
  • Google protobuf使用技巧和经验总结
  • Kotlin协程:Flow基础原理
  • linux格式化输入输出
  • 一篇文章告诉你,为什么必须要学Excel?
  • Intellij IDEA--Undo Commit,Revert Commit,Drop Commit的区别
  • 2019.2.20 c++ 知识梳理
  • Centos6.8 使用rpm安装mysql5.7
  • interface和setter,getter
  • java中具有继承关系的类及其对象初始化顺序
  • leetcode-27. Remove Element
  • php中curl和soap方式请求服务超时问题
  • react-native 安卓真机环境搭建
  • vue从创建到完整的饿了么(18)购物车详细信息的展示与删除
  • vue--为什么data属性必须是一个函数
  • Webpack 4x 之路 ( 四 )
  • WinRAR存在严重的安全漏洞影响5亿用户
  • Xmanager 远程桌面 CentOS 7
  • 官方新出的 Kotlin 扩展库 KTX,到底帮你干了什么?
  • 前端设计模式
  • 算法之不定期更新(一)(2018-04-12)
  • 探索 JS 中的模块化
  • 腾讯视频格式如何转换成mp4 将下载的qlv文件转换成mp4的方法
  • 详解NodeJs流之一
  • 想使用 MongoDB ,你应该了解这8个方面!
  • 蚂蚁金服CTO程立:真正的技术革命才刚刚开始
  • 曜石科技宣布获得千万级天使轮投资,全方面布局电竞产业链 ...
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • #gStore-weekly | gStore最新版本1.0之三角形计数函数的使用
  • $分析了六十多年间100万字的政府工作报告,我看到了这样的变迁
  • (10)工业界推荐系统-小红书推荐场景及内部实践【排序模型的特征】
  • (rabbitmq的高级特性)消息可靠性
  • (简单) HDU 2612 Find a way,BFS。
  • (论文阅读22/100)Learning a Deep Compact Image Representation for Visual Tracking
  • .axf 转化 .bin文件 的方法
  • .NET 4.0中的泛型协变和反变
  • .net core 6 redis操作类
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET DevOps 接入指南 | 1. GitLab 安装
  • .NET 命令行参数包含应用程序路径吗?
  • .NET 应用启用与禁用自动生成绑定重定向 (bindingRedirect),解决不同版本 dll 的依赖问题
  • @我的前任是个极品 微博分析
  • [ solr入门 ] - 利用solrJ进行检索
  • [2016.7 day.5] T2
  • [BZOJ5125]小Q的书架(决策单调性+分治DP+树状数组)
  • [C++]:for循环for(int num : nums)