Spark Äquivalent von IF Then ELSE
Ich habe diese Frage hier früher gesehen und daraus Lehren gezogen. Ich bin mir jedoch nicht sicher, warum ich einen Fehler erhalte, wenn ich der Meinung bin, dass er funktionieren sollte.
Ich möchte eine neue Spalte in vorhandenem Spark erstellenDataFrame
nach einigen Regeln. Hier ist was ich geschrieben habe. iris_spark ist der Datenrahmen mit einer kategorialen Variablen iris_spark mit drei unterschiedlichen Kategorien.
from pyspark.sql import functions as F
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))
Führt den folgenden Fehler aus.
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-157-21818c7dc060> in <module>()
----> 1 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)))
TypeError: when() takes exactly 2 arguments (3 given)
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-157-21818c7dc060> in <module>()
----> 1 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)))
TypeError: when() takes exactly 2 arguments (3 given)
Eine Idee warum?