2017-01-20 5 views
0

Ich habe einen Datenrahmen in PySpark. Ich möchte dem Datenrahmen bedingt eine Spalte hinzufügen.Hinzufügen Spalte zu Datenrahmen bedingt in Pyspark

Sagen Wenn der Datenrahmen die Spalte nicht enthält, fügen Sie eine Spalte mit den Werten null hinzu. Wenn die Spalte vorhanden ist, dann nichts tun und die gleichen Datenrahmen als neuer Datenrahmen

Rückkehren ich die bedingte Anweisung in PySpark geben sie

Antwort

1

Es ist nicht schwer, aber Sie werden ein bisschen mehr brauchen als ein Spaltenname, um es richtig zu machen. Erforderlich Importe

from pyspark.sql import types as t 
from pyspark.sql.functions import lit 
from pyspark.sql import DataFrame 

Beispiel Daten:

df = sc.parallelize([("a", 1, [1, 2, 3])]).toDF(["x", "y", "z"]) 

eine Hilfsfunktion (für die Verwendung mit älteren Python Versionen abzustreifen Typenannotationen):

def add_if_not_present(df: DataFrame, name: str, dtype: t.DataType) -> DataFrame: 
    return (df if name in df.columns 
     else df.withColumn(name, lit(None).cast(dtype))) 

Verwendungsbeispiel:

add_if_not_present(df, "foo", t.IntegerType()) 
DataFrame[x: string, y: bigint, z: array<bigint>, foo: int] 
add_if_not_present(df, "x", t.IntegerType()) 
DataFrame[x: string, y: bigint, z: array<bigint>] 
DataFrame[x: string, y: bigint, z: array<bigint>, foobar: struct<foo:int,bar:int>] 
Verwandte Themen