次のデータセットがあり、いくつかのnull値が含まれています。sparkでfillnaを使用してnull値を置き換える必要があります。
データフレーム:
df = spark.read.format("com.databricks.spark.csv").option("header","true").load("/sample.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値を置き換える方法?フィルナを使用して可能な方法を教えてください。前もって感謝します。
Height
列は数値ではないようです。 df.na.fill(10)
を呼び出すと、sparkは、数値列である_10
_の型と一致する列でnullのみを置き換えます。
Height
列を文字列にする必要がある場合は、df.na.fill('10').show()
を試すことができます。それ以外の場合は、IntegerType()
へのキャストが必要です。
必要に応じて、各列に特定のデフォルト値を指定することもできます。
df.na.fill({'Height': '10', 'Name': 'Bob'})