我在这里看到了一个解决方案,但是当我尝试它时,它并不适合我。
首先我导入cars.csv文件:
val df = sqlContext.read
.format("com.databricks.spark.csv")
.option("header", "true")
.load("/usr/local/spark/cars.csv")
如下所示:
+----+-----+-----+--------------------+-----+
|year| make|model| comment|blank|
+----+-----+-----+--------------------+-----+
|2012|Tesla| S| No comment| |
|1997| Ford| E350|Go get one now th...| |
|2015|Chevy| Volt| null| null|
然后我这样做:
df.na.fill("e",Seq("blank"))
但是空值并没有改变。
任何人都可以帮助我吗?
答案 0 :(得分:27)
这基本上很简单。您需要创建一个新的DataFrame
。我使用您之前定义的DataFrame df
。
val newDf = df.na.fill("e",Seq("blank"))
DataFrame
是不可变结构。
每次执行需要存储的转换时,您都需要将转换后的DataFrame
影响为新值。
答案 1 :(得分:4)
你可以用这种方式在java中实现相同的目标
Dataset<Row> filteredData = dataset.na().fill(0);
答案 2 :(得分:0)
如果列是字符串类型,
val newdf= df.na.fill("e",Seq("blank"))
会工作的。
由于它是浮点类型(如图片所示),您需要使用
val newdf= df.na.fill(0.0, Seq("blank"))