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

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

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

(六)删除指定数据进行提取

1. 删除指定数据进行提取

List.RemoveRange(list as list, index as number, optional count as number) as list

第1参数为数据列表;第2参数为索引数字格式,从0开始;第3参数为删除的数量,默认为1,如果为0则代表不删除,同时(第2参数+第3参数)<=列表值的数量;最终生成的是列表

例:

List.RemoveRange({1..10},0)={2..10}

List.RemoveRange({1..10},3,5)={1..3,9,10}

解释:第2参数索引3代表是第4位,也就是数值4,从此位置开始连续删除之后的5个值(也就是4-8)。

2. 删除空值后进行提取

List.RemoveNulls(list as list) as list

对于列表中的空值进行删除,生成一个新的列表,只有1个参数。也可以理解为对一个列表选择不等于空值。List.Select(列表, each _<>null)

例:

List.RemoveNulls({null,1,2})={1,2}

List.Select({null,1,2},each _<>null)={1,2}

3. 批量删除匹配值后提取

List.RemoveMatchingItems(list1 as list, list2 as list, optional equationCriteria as any) as list

从列表1从删除列表2的指定值,如果没找到则返回原始list1。第1参数为原始列表;第2参数为要删除的值列表;第三参数是可以指定一个可选相等条件来空值的测试。

例:

List.RemoveMatchingItems({1..10},{5..10})={1..4}

List.RemoveMatchingItems({#date(2018,11,11),1..10,"a".."z"},List.Transform({0..364},(x)=>Date.AddDays(#date(2018,1,1),x)))={1..10,"a".."z"}

解释,通过List.Transform函数生成一个2018年的时间列表,这样就可以把原来列表中有关2018年的时间都可以去除。

List.RemoveMatchingItems({1..10},{5}, each_=5)={1..4,6..10}

解释:因为第3参数是=5,则找到等于5的值,并删除

List.RemoveMatchingItems({1..10},{5}, each_<=5)={6..10}

解释:因为第2参数为{5},第3参数为<=5,用第2参数和第3参数做比较,如果第2参数符合第3参数条件,则删除条件即为第3参数;如果第2参数不符合第3参数条件,则返回第3参数的相反值。

List.RemoveMatchingItems({1..10},{4}, each_>5)={5..10}

解释:因为第2参数不符合第3参数的条件,返回的结果是第三

List.RemoveMatchingItems({"a".."z"},{"b"},each_ >="a")={}

解释:因为第2参数符合第3参数,所以删除条件为第3参数,所有的值都大于"a",所以都被删除,返回的是一个空列表。

4. 从尾删除列表的最后几个数据

List.RemoveLastN(list as list, optionalcountOrCondition as any) as any

从列表尾删除N个元素。第1参数是数据列表;第2参数可以是个数也可以是条件,如果是数字则直接删除最后N项的数据,如果是条件,一旦不满足条件即结束。

例:

List.RemoveLastN({1..10}, 3)={1..7}

List.RemoveLastN({1..10}, each _>5)={1..5}

解释:因为从后开始和5比,直到5为止结束。所以返回的是1-5的列表。

List.RemoveLastN({1..10,1}, each _>5)={1..10,1}

解释:因为从后开始,第一个是1,和第2参数的条件比较,是不符合的,所以就结束对比,也就是没有符合删除的条件,返回的就是原列表{1..10,1}。

5. 从头删除列表的最后几个数据

List.RemoveFirstN(list as list, optionalcountOrCondition as any) as any

从列表头删除N个元素。第1参数是数据列表;第2参数可以是个数也可以是条件,如果是数字则直接删除最初的N项数据,如果是条件,一旦不满足条件即结束。

例:

List.RemoveFirstN({1..10},3)={4..10}

List.RemoveFirstN({1..10}, each _<5)={5..10}

解释:因为从头开始和小于5比,直到5为止结束。所以返回的是5-10的列表。

List.RemoveFirstN({10,1..10}, each _<5)={10,1..10}

解释:因为从后开始,第一个是10,和第2参数的条件比较,是不符合的,所以就结束对比,也就是没有符合删除的条件,返回的就是原列表{10,1..10}。

6. 根据新列表删除旧列表中的值

List.RemoveItems(list1 as list, list2 as list) as list

第1个参数是需要被替换的列表;第2个参数是去要删除的值列表;返回生成的是新列表格式。

例:

List.RemoveItems({1..10},{5..10})={1..4}

List.RemoveItems({1,2,3,2,1},{1,2})={3}

List.RemoveItems({"a","b","c",1,2,3,"一","二"},{"a".."z"})={1..3,"一","二"}

解释:因为第2参数是英文字母的列表,所以把第1参数旧列表中所有英文26个字母单字都删除了。

问:那如何删除列表中值包含"a"的所有元素?

List.RemoveItems({"ab","bc"},List.FindText({"ab","bc"},"a"))={"bc"}

解释:因为要考虑到包含,可以参考4List.FindText函数,找到哪些包含"a"的列表值并生成一个新的需要删除的列表,最后通过List.RemoveItems函数来进行删除。

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

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

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

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

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • (六)删除指定数据进行提取
    • 1. 删除指定数据进行提取
      • 2. 删除空值后进行提取
        • 3. 批量删除匹配值后提取
          • 4. 从尾删除列表的最后几个数据
            • 5. 从头删除列表的最后几个数据
              • 6. 根据新列表删除旧列表中的值
              领券
              问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档