IF then ELSE 的Spark 等效項
在此範例中,我們的目標是將一個新列「Class」是根據現有分類列「iris_class」的值,該欄位有三個不同的
但是,提供的程式碼遇到錯誤:
iris_spark_df = iris_spark.withColumn( "Class", F.when(iris_spark.iris_class == 'Iris-setosa', 0, F.when(iris_spark.iris_class == 'Iris-versicolor',1)).otherwise(2))
錯誤訊息表示Spark 中的when() 函數僅接受兩個參數,與提供的程式碼相反。
為了解決這個問題,使用when()函數的正確結構是任一:
(when(col("iris_class") == 'Iris-setosa', 0) .when(col("iris_class") == 'Iris-versicolor', 1) .otherwise(2))
或
(when(col("iris_class") == 'Iris-setosa', 0) .otherwise(when(col("iris_class") == 'Iris-versicolor', 1) .otherwise(2)))
這些表達式相當於SQL CASE 語句相當於SQL CASE 語句:
CASE WHEN (iris_class = 'Iris-setosa') THEN 0 WHEN (iris_class = 'Iris-versicolor') THEN 1 ELSE 2 END
和
CASE WHEN (iris_class = 'Iris-setosa') THEN 0 ELSE CASE WHEN (iris_class = 'Iris-versicolor') THEN 1 ELSE 2 END END
Spark中when()的一般語法是:
when(condition, value).when(...)
或
或when(condition, value).otherwise(...)
以上是如何使用「when()」在 Spark 中實作 IF-THEN-ELSE 邏輯?的詳細內容。更多資訊請關注PHP中文網其他相關文章!