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

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

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 listoptional 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}

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

推荐阅读更多精彩内容