PySpark: mehrere Bedingungen in der wenn-Klausel
Möchte ich ändern Sie die Werte von Zellen eines dataframe Spalte (Alter), wo es derzeit ist leer und ich würde es nur tun, wenn eine andere Spalte (Überlebt) hat den Wert 0 für die entsprechende Zeile, wo es leer ist für das Alter. Wenn es 1 ist in das Überlebt Spalte aber leer, in der Spalte " Age " dann halte ich es als null.
Habe ich versucht zu verwenden &&
Betreiber, aber es hat nicht funktioniert. Hier ist mein code:
tdata.withColumn("Age", when((tdata.Age == "" && tdata.Survived == "0"), mean_age_0).otherwise(tdata.Age)).show()
Irgendwelche Vorschläge, wie damit umzugehen ist? Danke.
Fehlermeldung:
SyntaxError: invalid syntax
File "<ipython-input-33-3e691784411c>", line 1
tdata.withColumn("Age", when((tdata.Age == "" && tdata.Survived == "0"), mean_age_0).otherwise(tdata.Age)).show()
^
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erhalten Sie
SyntaxError
error-Ausnahme ausgelöst, weil Python hat keine&&
Betreiber. Es hatand
und&
wo die letztere ist die richtige Wahl zu erstellen Boolesche Ausdrücke aufColumn
(|
für eine logische Disjunktion und~
für logische negation).Bedingung, die Sie erstellt haben, ist ebenfalls ungültig, weil Sie nicht der Auffassung,operator-Rangfolge.
&
in Python hat eine höhere Priorität als==
also Ausdruck muss in Klammern.On a side note
when
Funktion ist äquivalent zucase
Ausdruck nichtWHEN
- Klausel. Immer noch die gleichen Regeln gelten. Verbindung:Disjunktion:
Natürlich können Sie Bedingungen definieren, die GESONDERT zu vermeiden Klammern:
sollte es funktioniert zumindest in pyspark 2.4
wenn in pyspark mehrere Bedingungen können mit &(für und) und | (für oder).
Hinweis:In pyspark t ist wichtig, um zu schließen alle Ausdrücke innerhalb von Klammern (), die kombinieren, um die Bedingung
Zündkerzen Scala-code (&&) oder (||) Bedingungen können verwendet werden, innerhalb wenn Funktion
=======================
Dieser code-Schnippsel kopiert von sparkbyexamples.com
Sollte es sein: