web-dev-qa-db-ja.com

Spark fillNaがnull値を置き換えない

次のデータセットがあり、いくつかのnull値が含まれています。sparkでfillnaを使用してnull値を置き換える必要があります。

データフレーム:

df = spark.read.format("com.databricks.spark.csv").option("header‌​","true").load("/sam‌​ple.csv")

>>> df.printSchema();
root
 |-- Age: string (nullable = true)
 |-- Height: string (nullable = true)
 |-- Name: string (nullable = true)

>>> df.show()
+---+------+-----+
|Age|Height| Name|
+---+------+-----+
| 10|    80|Alice|
|  5|  null|  Bob|
| 50|  null|  Tom|
| 50|  null| null|
+---+------+-----+

>>> df.na.fill(10).show()

naの値を指定すると、同じデータフレームは変更されず、再び表示されます。

+---+------+-----+
|Age|Height| Name|
+---+------+-----+
| 10|    80|Alice|
|  5|  null|  Bob|
| 50|  null|  Tom|
| 50|  null| null|
+---+------+-----+

新しいデータフレームを作成して塗りつぶし値をデータフレームに保存しようとしましたが、結果は変更されていないように表示されます。

>>> df2 = df.na.fill(10)

null値を置き換える方法?フィルナを使用して可能な方法を教えてください。前もって感謝します。

9
Churchill vins

Height列は数値ではないようです。 df.na.fill(10)を呼び出すと、sparkは、数値列である_10_の型と一致する列でnullのみを置き換えます。

Height列を文字列にする必要がある場合は、df.na.fill('10').show()を試すことができます。それ以外の場合は、IntegerType()へのキャストが必要です。

14
Mariusz

必要に応じて、各列に特定のデフォルト値を指定することもできます。

df.na.fill({'Height': '10', 'Name': 'Bob'})
4
beljul