Maison > développement back-end > Tutoriel Python > Comment implémenter la logique IF-THEN-ELSE dans Spark DataFrames ?

Comment implémenter la logique IF-THEN-ELSE dans Spark DataFrames ?

Mary-Kate Olsen
Libérer: 2024-11-17 04:18:03
original
359 Les gens l'ont consulté

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

Spark Equivalent de IF Then ELSE

Cette question explore la création d'une nouvelle colonne dans un Spark DataFrame basée sur des règles conditionnelles.

Problème avec la fonction When

Le code fourni tente d'utiliser la fonction when() pour créer une nouvelle colonne nommée "Class" en fonction des valeurs de la colonne "iris_class". Cependant, il génère une erreur indiquant que when() ne prend que deux arguments.

Syntaxe et structure correctes

La syntaxe correcte pour la fonction when() est :

F.when(condition1, value1).when(condition2, value2)...otherwise(otherwiseValue)
Copier après la connexion

Cela permet d'enchaîner plusieurs clauses when(), avec une clause facultative else() pour gérer les cas non couverts par les clauses when().

Le SQL équivalent pour cette syntaxe serait une instruction CASE avec plusieurs clauses WHEN, comme indiqué ci-dessous :

CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE otherwiseValue
END
Copier après la connexion

Solution recommandée

Par conséquent, le code correct pour créer la "Classe" La colonne doit être :

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)
)
Copier après la connexion

Syntaxe alternative

Une autre syntaxe valide pour obtenir le même résultat est :

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)
    )
)
Copier après la connexion

Remarque sur Hive IF

Il est important de noter que le conditionnel Hive IF, qui a la syntaxe IF(condition, if-true, if-false), n'est pas pris en charge dans Spark. Ce conditionnel ne peut être utilisé que dans les requêtes SQL brutes avec prise en charge de Hive.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal