Fügen Sie eine leere Spalte auf Spark-DataFrame
Wie bereits in viele andere Orte auf der Website, das hinzufügen einer neuen Spalte zu einer vorhandenen DataFrame ist nicht einfach. Leider ist es wichtig, diese Funktionalität (auch wenn es ineffizient ist, die in einer verteilten Umgebung) vor allem, wenn Sie versuchen zu verketten von zwei DataFrame
s mit unionAll
.
Was ist die eleganteste Problemumgehung zum hinzufügen eines null
Spalte zu einer DataFrame
zu erleichtern unionAll
?
Meine version geht so:
from pyspark.sql.types import StringType
from pyspark.sql.functions import UserDefinedFunction
to_none = UserDefinedFunction(lambda x: None, StringType())
new_df = old_df.withColumn('new_column', to_none(df_old['any_col_from_old']))
InformationsquelleAutor architectonic | 2015-10-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alles, was Sie brauchen, hier ist eine wörtliche und Darsteller:
Einem vollständigen Beispiel:
Einer Scala entspricht, kann hier gefunden werden: Erstellen neuer Dataframe mit leer/null-Feld-Werte
new_column not in df.columns
überprüfen, kann aber nicht machen es zu arbeiten.Wird diese Hilfe: stackoverflow.com/q/35904136/1560062?
Ich sah es auch, aber ich war noch nicht in der Lage zu übernehmen, die bedingt in eine
withColumn('blah', where(has_column(df['blah']) == False)....
Konstrukt. Müssen fehlen einige syntaktische Konstrukt. Ich möchte hinzufügen eine Spalte mit Null-Werten, wenn es nicht vorhanden ist. Diese Antwort tut ehemaligen, der andere prüft letzteren.wenn has_column(df) else df.withColumn(....) - keine Funken-spezifisch.
Verdammt....Ich bekomme sehr gemischt, bis Wann mit der python-syntax funktioniert, und wenn es nicht. Zum Beispiel können Sie nicht haben bedingten code innerhalb der
withColumn
ist und UDFs. Danke!!!InformationsquelleAutor zero323
Ich würde gegossen leuchtet(Keine) bis NullType statt StringType. So, dass, wenn wir jemals heraus zu filtern, die keine null-Zeilen auf die Spalte...es kann leicht getan werden wie folgt
Auch vorsichtig sein, nicht mit beleuchtet("None")(mit Anführungszeichen), wenn Sie Gießen, StringType, da wäre es nicht für die Suche für Datensätze mit der filter-Bedingung .isNull() auf col("new_column").
InformationsquelleAutor Shrikant Prabhu