前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何在Power Query中提取数据——列表篇(3)

如何在Power Query中提取数据——列表篇(3)

作者头像
逍遥之
发布2020-03-23 16:36:58
1.3K0
发布2020-03-23 16:36:58
举报
文章被收录于专栏:数据技巧

(五)替代指定数据提取。

1. 找到目标值并用指定值替换后提取

List.ReplaceValue(list as list, oldValue as any, newValue as any,replacer as function)as list

第1参数是列表;第2参数是被替换的旧值(不指定格式);第3参数是去替换的新值(不指定格式);第4参数替换函数。替换函数由2个。一个是数值替换Replacer.ReplaceValue,一个是文本替换Replacer.ReplaceText;4个函数都被必选参数。需要注意的是空值计算列表和空列表代表不一样的含义。

例:

List.ReplaceValue({1..10},1,2,Replacer.ReplaceValue)={2,2..10}

解释:因为列表里面是数值,所以用Replacer.ReplaceValue函数进行替换。

List.ReplaceValue({"a".."z"},"a","b",Replacer.ReplaceText)={"b","b".."z"}

解释:因为列表里面是文本,所以用Replacer.ReplaceText函数进行替换。

List.ReplaceValue({#date(2018,11,11),#datetime(2018,11,11,12,0,0)},#date(2018,11,11),#date(2019,11,11),Replacer.ReplaceValue)={#date(2019,11,11),#datetime(2018,11,11,12,0,0)}

解释:如果是替换时间类型的话,要用Replacer.ReplaceValue函数进行替换。

List.ReplaceValue({},{},"a",Replacer.ReplaceValue)={}

解释:因为是空列表,所以也就不存在值的概念,返回的当然也是空列表。

List.ReplaceValue({null},null,"a",Replacer.ReplaceText)={null}

解释:因为空值是需要用Replacer.ReplaceValue来进行替换,使用Replacer.ReplaceText则无效。

List.ReplaceValue({null},null,"a",Replacer.ReplaceValue)={"a"}

解释:替换空值需要用到函数Replacer.ReplaceValue

List.ReplaceValue({"a"},"a",null,Replacer.ReplaceValue)={null}

解释:如果是要用空值替换对应的值,也是需要用Replacer.ReplaceValue函数。

2. 指定范围内进行值替换

List.ReplaceRange(list as list, index as number, count as number,replaceWith as list)as list

第1参数是列表格式;第2参数是索引的数字,索引是0起始;第3参数是替换的个数;第4参数是替换的列表格式;最终返回的也是列表格式。此外需要注意的是第2参数+第3参数的值要<=列表的值数量。通俗理解就是用一个列表替换一个指定范围列表。

例:

List.ReplaceRange({1..10},0,1,{"a"})={"a",2..10}

解释:找到索引起始值为1,替换1个,用"a"替换

List.ReplaceRange({1..10},1,5,{"a","b"})={1,"a","b",7..10}

解释:找到索引起始值为2,连续替换5个,相当于{2..6},用{"a","b"}列表替换{2..6}

3. 对列表指定批量替换

List.ReplaceMatchingItems(list as list, replacements as list, optional equationCriteria as any) as list

第1参数是数据列表;第2参数是批量替换的列表,每一个新旧替换作为一个list并组合成一个总的list(相当于大list套小list,要有双层嵌套{{}}格式);第3参数可以指定一个可选相等条件值来控制相等测试(也就是用来替代被替换的值)。

例:

List.ReplaceMatchingItems({1..10}, {{1,"a"}})={"a",2..10}

解释:用"a"替换1生成新列表

List.ReplaceMatchingItems({1..10}, {{1,"a"},{2,"b"})={"a","b",3..10}

解释:用"a"替换1,用"b"替换2生成列表

List.ReplaceMatchingItems({{1..3},{1..10}},{{{1..3},{"a".."c"}}})={{"a".."c"},{1..10}}

解释:用{"a".."c"}列表替换{1..3}列表并生成新的组合列表。单个列表用可以用多个值替换,多个列表则需用列表进行替换。

List.ReplaceMatchingItems({1..5},{{1,0}},each_<3)={0,0,3,4,5}

解释:使用第2参数的旧值和第3参数做比较,如果符合则替换条件为第3参数,如果不符合,替换条件则是第3参数的相反值。因为第2参数的旧值符合第3参数的条件,则替换条件就是第3参数<3,所以1,2被0替换。

List.ReplaceMatchingItems({1..5},{{1,0}},each_>3)={0,0,0,4,5}

解释:因为第2参数旧值不符合第3参数条件,所以条件为第3参数的相反,也就是<=3,用0替换<=3的条件的值。

List.ReplaceMatchingItems({1..5,1,2},{{1,0}},each_>3)={0,0,0,4,5,0,0}

解释:因为第2参数旧值不符合第3参数条件,所以替换条件是第3参数的相反值,用0替换<3的条件值。

4. 生成重复的列表

List.Repeat(list as list, count as number) as list

第1个参数是需要进行操作的列表;第2个参数是重复的次数

List.Repeat({1},3)={1,1,1}

List.Repeat({1..10},2)={1..10}&{1..10}

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2018-11-28,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 数据技巧 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (五)替代指定数据提取。
    • 1. 找到目标值并用指定值替换后提取
      • 2. 指定范围内进行值替换
        • 3. 对列表指定批量替换
          • 4. 生成重复的列表
          领券
          问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档