Ich habe ein Spark-Datenframe mit einer Spalte, die String-Werte enthält (z. B. 'xyztext \ afadfa'). Ich mag eine neue Spalte erstellen, in dem der Wert ‚0‘ oder ‚1‘ je nachdem, ob die ursprüngliche Spalte enthielt bestimmten Text (zB ‚Text‘)Erstellen einer neuen Spalte mit Funktion in Spark Datareframe basierend auf einer String-Suche einer anderen Spalte
Beispiel des Ergebnisses:
## +---+---+------+---------+
## | x1| x2| x3 | xnew |
## +---+---+------+---------+
## | 1| a| xtext| 1 |
## | 3| B| abcht| 0 |
EDIT: Ich habe dies zuvor versucht (und jetzt hinzugefügt .cast (int)) dank SGVD, aber erhalten 'Spalte ist nicht aufrufbar' Fehler, wenn ich den Spaltennamen einfügen: df1 = df.withColumn ('Target', d.f.column. enthält ('text'). cast ('int'))
Das Beste, was ich bisher erreicht habe, ist das Erstellen einer Spalte mit 0's darin:
from pyspark.sql.functions import lit
df1 = df.withColumn('Target', lit(0))
Ich habe auch versucht, eine if then else Anweisung, um den Vektor zu schaffen, aber habe kein Glück:
def targ(string):
if df.column.contains('text'): return '1'
else: return '0'
Vielen Dank für Ihre Hilfe. Weißt du zufällig, warum ich diesen Fehler immer wieder bekomme, wenn ich den Spaltennamen eingebe? TypeError Traceback (letzter Aufruf zuletzt) in () ----> 1 df2 = df1.withColumn ('Ziel', df.cursurist.contains ('text'). cast ('int')) TypeError: Objekt 'Spalte' ist nicht aufrufbar –
W4K1NG
Ich nahm fälschlicherweise an, dass eine Scala-Methode auch in PySpark verfügbar war. Ich habe meine Antwort mit einigen tatsächlich funktionierenden Beispielen bearbeitet. – sgvd
Prost - vielen Dank. – W4K1NG