2015-10-27 19 views
8

Ich sah eine Lösung hier, aber wenn ich es versuchte, funktioniert es nicht für mich.Ersetzen Nullwerte in Spark DataFrame

Zuerst habe ich importieren Sie eine cars.csv Datei:

val df = sqlContext.read 
       .format("com.databricks.spark.csv") 
       .option("header", "true") 
       .load("/usr/local/spark/cars.csv") 

, die wie folgt aussieht:

+----+-----+-----+--------------------+-----+ 
|year| make|model|    comment|blank| 
+----+-----+-----+--------------------+-----+ 
|2012|Tesla| S|   No comment|  | 
|1997| Ford| E350|Go get one now th...|  | 
|2015|Chevy| Volt|    null| null| 

Dann tu das I:

df.na.fill("e",Seq("blank")) 

Aber die Nullwerte didn ändere nicht.

Kann mir jemand helfen?

+0

Die Aussage 'df.na.fill ("e", Seq ("blank"))' gibt einen neuen 'DataFrame' so' df' wird nicht geändert werden. Weisen Sie es einem neuen 'DataFrame' zu? –

+0

Danke! Ich hab es geschafft! –

Antwort

19

Dies ist im Grunde sehr einfach. Sie müssen ein neues DataFrame erstellen. Ich verwende die DataFrame df, die Sie zuvor definiert haben.

val newDf = df.na.fill("e",Seq("blank")) 

DataFrame s sind unveränderliche Strukturen. Jedes Mal, wenn Sie eine Umwandlung durchführen, die Sie speichern müssen, müssen Sie die transformierte DataFrame auf einen neuen Wert auswirken.

3

Sie können auf diese Weise in Java gleiche erreichen

Dataset<Row> filteredData = dataset.na().fill(0); 
Verwandte Themen