web-dev-qa-db-fra.com

PySpark: lorsque la fonction avec plusieurs sorties

J'essaie d'utiliser une fonction "chaîné quand". En d'autres termes, j'aimerais obtenir plus de deux sorties.

J'ai essayé d'utiliser la même logique de la fonction IF concaténée dans Excel:

  df.withColumn("device_id", when(col("device")=="desktop",1)).otherwise(when(col("device")=="mobile",2)).otherwise(null))

Mais cela ne fonctionne pas car je ne peux pas mettre un Tuple dans la fonction "sinon".

9
Fede

As-tu essayé:

from pyspark.sql import functions as F
df.withColumn('device_id', F.when(col('device')=='desktop', 1).when(col('device')=='mobile', 2).otherwise(None))

Notez que lors du chaînage des fonctions when, vous n'avez pas besoin d'encapsuler les appels successifs dans une fonction otherwise.

21
Grr