Scala 基于数据帧选择行将检查数据帧的多个列
我有以下数据帧Scala 基于数据帧选择行将检查数据帧的多个列,scala,apache-spark,Scala,Apache Spark,我有以下数据帧 ID Names Marks1 Marks2 Marks3 1 A 50 102 87 2 B 54 75 83 3 C 5 175 43 4 D 35 75 80 5 E 87 75 B 6 F 93 75 83 我有一个列列表val colsForCheck=ListMarks1、Marks2、Marks3 和支票,如 5
ID Names Marks1 Marks2 Marks3
1 A 50 102 87
2 B 54 75 83
3 C 5 175 43
4 D 35 75 80
5 E 87 75 B
6 F 93 75 83
我有一个列列表val colsForCheck=ListMarks1、Marks2、Marks3
和支票,如
50检查下面的代码
scala> df.show(false)
+---+-----+------+------+------+
|id |names|marks1|marks2|marks3|
+---+-----+------+------+------+
|1 |A |50 |102 |87 |
|2 |B |54 |75 |83 |
|3 |C |5 | 175 |43 |
|4 |D |35 |75 |80 |
|5 |E |87 |75 |B |
|6 |F |93 |75 |83 |
+---+-----+------+------+------+
过滤条件
你试过什么?到目前为止,Scala代码在哪里?我的意思是,它基本上只是使用过滤和选择,不是吗?还是仅仅是好的老SQL?@UninformedUser,我在一个基于所需列的直接筛选器中逐个使用它。如何修改过滤器,使条件自动放置在列表中提到的所有列上?我已添加解决方案,请检查并进行投票,如果有帮助,请接受..:
scala> df.show(false)
+---+-----+------+------+------+
|id |names|marks1|marks2|marks3|
+---+-----+------+------+------+
|1 |A |50 |102 |87 |
|2 |B |54 |75 |83 |
|3 |C |5 | 175 |43 |
|4 |D |35 |75 |80 |
|5 |E |87 |75 |B |
|6 |F |93 |75 |83 |
+---+-----+------+------+------+
scala> val colsForCheck = Seq("marks1","marks2","marks3")
.map(c => !(
col(c).cast("int").isNotNull &&
col(c) >= 50 && col(c) <= 100)
)
.reduce(_ || _)
scala> df.filter(colsForCheck).show(false)
+---+-----+------+------+------+
|id |names|marks1|marks2|marks3|
+---+-----+------+------+------+
|1 |A |50 |102 |87 |
|3 |C |5 | 175 |43 |
|4 |D |35 |75 |80 |
|5 |E |87 |75 |B |
+---+-----+------+------+------+