Gio*_*ous 1 scala missing-data apache-spark
我有一个.csv包含缺少值的行的文件.这些值代替null,由字符表示?.
如何删除包含至少一个具有值的列的行?,因为它df.na.drop()不起作用(因为缺少的值不是null)?
数据如下所示(我有35列 - 可以在任何列中找到缺失值)
+-------+--------+------+-------+
| col_1 | col_2 | ... | col_35|
+-------+--------+------+-------+
| 0.75 | ? | ... | 15 |
| ? | Helen | ... | 21 |
| -1.2 | George | ... | ? |
| ? | Andrew | ... | 129 |
| 0.12 | Maria | ... | 12 | // Should not be deleted
+-------+--------+------+-------+
Run Code Online (Sandbox Code Playgroud)
这是读取文件的代码.
val df = sparkSession.read
.format("com.databricks.spark.csv")
.option("header", "true")
.option("mode", "DROPMALFORMED")
.load("data.csv")
.toDF()
Run Code Online (Sandbox Code Playgroud)
如果?表示缺少值,您只需将阅读器配置为识别:
val df = spark.read
.format("csv")
.option("nullValue", "?") // Use "?" as null character
.option("header", "true")
.option("mode", "DROPMALFORMED")
.load("data.csv")
.toDF()
Run Code Online (Sandbox Code Playgroud)
并使用标准na.drop:
df.na.drop
Run Code Online (Sandbox Code Playgroud)