ホームページ > バックエンド開発 > Python チュートリアル > Spark DataFrames に IF-THEN-ELSE ロジックを実装するにはどうすればよいですか?

Spark DataFrames に IF-THEN-ELSE ロジックを実装するにはどうすればよいですか?

Mary-Kate Olsen
リリース: 2024-11-17 04:18:03
オリジナル
341 人が閲覧しました

How to Implement IF-THEN-ELSE Logic in Spark DataFrames?

IF then ELSE と同等の Spark

この質問では、条件付きルールに基づいて Spark データフレームに新しい列を作成する方法について詳しく説明します。

When 関数の問題

提供されたコードは、when() 関数を使用して、「iris_class」列の値に基づいて「Class」という名前の新しい列を作成しようとします。ただし、 when() が引数を 2 つだけ取ることを示すエラーがスローされます。

正しい構文と構造

when() 関数の正しい構文は次のとおりです。

1

F.when(condition1, value1).when(condition2, value2)...otherwise(otherwiseValue)

ログイン後にコピー

これにより、 when() 句でカバーされないケースを処理するためのオプションの else() 句を使用して、複数の when() 句を連鎖させることができます。

この構文は、以下に示すように、複数の WHEN 句を含む CASE ステートメントになります。

1

2

3

4

5

6

CASE

    WHEN condition1 THEN value1

    WHEN condition2 THEN value2

    ...

    ELSE otherwiseValue

END

ログイン後にコピー

推奨される解決策

したがって、「クラス」を作成するための正しいコードになります。列は次のようになります:

1

2

3

4

5

6

iris_spark_df = iris_spark.withColumn(

    "Class",

    F.when(iris_spark.iris_class == 'Iris-setosa', 0)

    .when(iris_spark.iris_class == 'Iris-versicolor', 1)

    .otherwise(2)

)

ログイン後にコピー

代替構文

同じ結果を達成するための別の有効な構文は次のとおりです:

1

2

3

4

5

6

7

8

iris_spark_df = iris_spark.withColumn(

    "Class",

    F.when(iris_spark.iris_class == 'Iris-setosa', 0)

    .otherwise(

        F.when(iris_spark.iris_class == 'Iris-versicolor', 1)

        .otherwise(2)

    )

)

ログイン後にコピー

注on Hive IF

構文 IF(condition, if-true, if-false) を持つ Hive IF 条件は、Spark ではサポートされていないことに注意することが重要です。この条件は、Hive サポートを備えた生の SQL クエリでのみ使用できます。

以上がSpark DataFrames に IF-THEN-ELSE ロジックを実装するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート