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

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

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

List.RemoveRange(list as list, index as numberoptional 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 listoptional 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 listoptionalcountOrCondition 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 listoptionalcountOrCondition 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函数来进行删除。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,294评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,493评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,790评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,595评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,718评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,906评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,053评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,797评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,250评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,570评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,711评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,388评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,018评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,796评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,023评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,461评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,595评论 2 350

推荐阅读更多精彩内容