IF then ELSE と同等の Spark
この例では、新しい列「Class」を「iris_spark」データフレームに追加することを目的としています。既存のカテゴリ列「iris_class」の値に基づきます。この列には 3 つの異なる値があります。
ただし、提供されたコードではエラーが発生します:
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() 関数が引数を 2 つだけ取ることを示しています。
この問題に対処するには、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 ステートメントと同等です:
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(...)
Hive IF 条件式 IF(condition, if-true, if-false) は Spark で直接サポートされておらず、使用できるのは次のとおりであることに注意してください。 Hive サポートを備えた生の SQL で使用されます。
以上が「when()」を使用して Spark で IF-THEN-ELSE ロジックを実装する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。