gpt4 book ai didi

scala - 如何删除具有过多 NULL 值的行?

转载 作者:行者123 更新时间:2023-12-04 17:45:27 31 4
gpt4 key购买 nike

我想对我的数据进行一些预处理,我想删除稀疏的行(对于某些阈值)。

例如,我有一个包含 10 个特征的数据框表,并且我有一个包含 8 个空值的行,然后我想删除它。

我找到了一些相关主题,但找不到任何对我有用的信息。

stackoverflow.com/questions/3473778/count-number-of-nulls-in-a-row

上面链接中的示例对我不起作用,因为我想自动执行此预处理。我不能写列名并相应地做一些事情。

那么有没有办法在不使用 Apache Spark 中的列名和 Scala 的情况下执行这个删除操作?

最佳答案

我很惊讶没有答案指出 Spark SQL 附带了几个符合要求的标准函数:

For example I have a dataframe table with 10 features, and I have a row with 8 null value, then I want to drop it.



您可以使用 DataFrameNaFunctions.drop 的变体之一方法与 minNonNulls适当设置,比如 2。

drop(minNonNulls: Int, cols: Seq[String]): DataFrame Returns a new DataFrame that drops rows containing less than minNonNulls non-null and non-NaN values in the specified columns.



并满足要求中列名的可变性:

I cannot write the column names and do something accordingly.



您可以简单地使用 Dataset.columns :

columns: Array[String] Returns all column names as an array.



假设您有以下数据集,其中包含 5 个特征(列)和几行几乎所有 null s。
val ns: String = null
val features = Seq(("0","1","2",ns,ns), (ns, ns, ns, ns, ns), (ns, "1", ns, "2", ns)).toDF
scala> features.show
+----+----+----+----+----+
| _1| _2| _3| _4| _5|
+----+----+----+----+----+
| 0| 1| 2|null|null|
|null|null|null|null|null|
|null| 1|null| 2|null|
+----+----+----+----+----+

// drop rows with more than (5 columns - 2) = 3 nulls
scala> features.na.drop(2, features.columns).show
+----+---+----+----+----+
| _1| _2| _3| _4| _5|
+----+---+----+----+----+
| 0| 1| 2|null|null|
|null| 1|null| 2|null|
+----+---+----+----+----+

关于scala - 如何删除具有过多 NULL 值的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36062908/

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