gpt4 book ai didi

scala - Spark 仅获取具有一个或多个空值的列

转载 作者:行者123 更新时间:2023-12-04 01:59:34 26 4
gpt4 key购买 nike

我想从一个数据框中获取其中至少包含一个空值的列的名称。

考虑下面的数据框:

val dataset = sparkSession.createDataFrame(Seq(
(7, null, 18, 1.0),
(8, "CA", null, 0.0),
(9, "NZ", 15, 0.0)
)).toDF("id", "country", "hour", "clicked")

我想获取列名称“国家/地区”和“小时”。

id  country hour    clicked
7 null 18 1
8 "CA" null 0
9 "NZ" 15 0

最佳答案

这是一个解决方案,但有点尴尬,我希望有更简单的方法:

val cols = dataset.columns

val columnsToSelect = dataset
// count null values (by summing up 1s if its null)
.select(cols.map(c => (sum(when(col(c).isNull,1))>0).alias(c)):_*)
.head() // collect result of aggregation
.getValuesMap[Boolean](cols) // now get columns which are "true"
.filter{case (c,hasNulls) => hasNulls}
.keys.toSeq // and get the name of those columns


dataset
.select(columnsToSelect.head,columnsToSelect.tail:_*)
.show()
+-------+----+
|country|hour|
+-------+----+
| null| 18|
| CA|null|
| NZ| 15|
+-------+----+

关于scala - Spark 仅获取具有一个或多个空值的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48261746/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com