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

【Power Query】List.Select 筛选列表

List.Select 筛选列表

——在列表中返回满足条件的元素

List.Select(列表,判断条件)
不是列表的可以转成列表再筛选,例如 Record.ToList

不同场景的判断条件参考写法

(1)单条件筛选

列表中小于50的数字
= List.Select({1,99,8,98,5},each _<50)

(2)多条件筛选【或】

列表中小于50或大于98的数字 【x<50,x>98】
= List.Select({1,99,8,98,5},each _<50 or _>98)

(3)多条件筛选【且】

列表中大于25且小于100的数字 【25<x<100】
= List.Select({1,30,25,18,100},each_>25 and_<100

(4)嵌套函数进行筛选

例如筛选奇偶
= List.Select({1,30,25,18,100},Number.IsEven)
——Number.IsEven判断是否为偶数
——Number.IsOdd 判断是否为奇数

(5)筛选文本

例如要包含了 孙 的
= List.Select({“孙兴华”,“孙悟空”,“猪八戒”},each Text.Contains(_,“孙”))

实际运用

1 行筛选

但是往往列表不是现成的,就需要转化,例如
求每个学生及格科目有几门,也就是筛选的对象是每一行记录
在这里插入图片描述
1 那么就需要先在每一行里嵌入当前行的记录:
= Table.AddColumn(源,“及格数”, each_)
在这里插入图片描述

2 接着将记录转列表:
= Table.AddColumn(源,“及格数”, each Record.ToList(_))
在这里插入图片描述

3 再跳过姓名,只取后面的数值。因为如果不做这一步,后面筛选的时候,会告诉你 文本无法运算 而出错,像下图这样
在这里插入图片描述
= Table.AddColumn(源,“及格数”, each List.Skip(Record.ToList(_),1))

4 再接着筛选:
= Table.AddColumn(源,“及格数”, each List.Select(List.Skip(Record.ToList(_),1),each _>=60))
到此为止,筛选出来的结果还是一个list
在这里插入图片描述

5 最后计数:
= Table.AddColumn(源,“及格数”, each List.Count(List.Select(List.Skip(Record.ToList(_),1),each _>=60)))
在这里插入图片描述

那么优秀的科目数量也可以依法炮制:
= Table.AddColumn(及格数,“优秀数”, each List.Count(List.Select(List.Skip(Record.ToList(_),1),each _>=80)))
——标红的地方需要自行替换,如果不在上一步的基础上做,这里就直接写
在这里插入图片描述

2 列筛选

以上图为例,就是在科目里筛选及格人数
不需要再转成列表,因为本身就是列表。也不需要跳过第一个,因为本身就不包含标题。
在这里插入图片描述
但是需要写成记录 record的形式,再转成表 Table.FromRecords,并连接上前一个表。
全部写完过分长了,下面以语文为例:
在这里插入图片描述

语文=List.Count(List.Select(源[语文],each _>=60))
其他科目也可以参照着加在后面,位置在中括号 ] 的前面,每写一个用英文逗号隔开

步骤解析可以看List.Sum 列求和
是同一个思路

http://www.lryc.cn/news/468449.html

相关文章:

  • Spring--4
  • django celery 定时任务 Crontab 计划格式
  • 动态应用程序安全测试 (DAST) 工具 Fortify WebInspect
  • 深入解析东芝TB62261FTG,步进电机驱动方案
  • Vue 常用的狗钩子函数
  • 【机器学习基础】激活函数
  • nnMamba用于糖尿病视网膜病变检测测试
  • 【Spring MVC】创建项目和建立请求连接
  • 台达A2伺服
  • ReactOS系统中搜索给定长度的空间地址区间中的二叉树
  • Postgresql中和时间相关的字段类型及其适用场景
  • 储能蓝海:技术革新与成本骤降引爆市场
  • java抽象类和接口
  • 法治在沃刷积分-刷文章浏览数
  • 【深度学习实验七】 自动梯度计算
  • JAVA毕业设计192—基于Java+Springboot+vue的个人博客管理系统(源代码+数据库+万字论文+开题+任务书)
  • must be ‘pom‘ but is ‘jar‘解决思路
  • STM32启动文件浅析
  • h5页面与小程序页面互相跳转
  • 探索 JavaScript 事件机制(四):React 合成事件系统
  • openlayers 封装加载本地geojson数据 - vue3
  • 手机号码携号转网查询接口-在线手机号码携号转网查询-手机号码携号转网查询API
  • yolo目标检测和姿态识别和目标追踪
  • Docker搭建开源Web云桌面操作系统Puter和DaedalOS
  • FAQ-为什么交换机发给服务器的日志显示的时间少8小时
  • [表达式]真假计算
  • 记录一次线上环境svchost.exe antimalware service executable 进程占用CPU过高问题
  • Docker 部署 EMQX 一分钟极速部署
  • STL-常用容器-list
  • Lambda 架构