2017-01-20 6 views
0

私はPySparkにデータフレームを持っています。条件付きでデータフレームに列を追加したいと思います。Pysparkの条件付きでデータフレームに列を追加

データフレームに列がない場合は、nullの値を持つ列を追加します。 列が存在する場合は、何もしないと私はPySpark

答えて

1

で条件文を渡すんそれは難しいことではありませんが、あなたはよりもう少し必要があります

どのように新しいデータフレームと同じデータフレームを返しますそれを正しく行うための列名。必要輸入

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

例データ:

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

ヘルパー機能(従来のPythonのバージョンとの使用のためは、型注釈ストリップ):

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))) 

使用例:

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>] 
関連する問題