2017-08-17 7 views
1

データフレームに追加する列が5つあります。 (A - E)これらの列の値は(a - e)変数に格納されます。データフレームに新しい列を追加するためのPyspark UDFの作成方法

代わりの

df.withColumn("A", a).withColumn("B", b).withColumn..... etc 

を使用して、我々は、UDFでこれを行うことができますか?

現在、私が命名した機能:

 def add_col(df_name,newCol,value): 
     df = df_name 
     df = df.withColumn(newCol, value) 
     return df 

しかし、私はUDFに変換し、それを使用する方法を理解することはできませんよ。助けてください。あなたが複数の列を追加したい場合は

+2

をUDFが1つの以上の列を生成することはできません...しかし、あなた複雑な列(配列または構造体の型)を返すことがあります。しかし、明らかに定数(リテラル)値で作業しているので、UDFを使用する点はありません –

答えて

1

あなたは*selectを使用することができます。

df.select("*", some_column, another_column, ...) 
+0

値を同じ手順で挿入する方法はありますか? – Viv

1

あなたは、UDFを使用しないでください、彼らは複数の結果を作成することはできません。あなたは他の回答でこれに似たselect文を書くことができますしかし

df.select(col("*"), lit(a).as("a"), lit(b).as("b"), ...) 

あなたはまた、追加、これを自動化することができます。

val fieldsMap = Map("a" -> a, "b" -> b) 
df.select(Array(col("*")) ++ fieldsMap.map(e => lit(e._2).as(e._1)) : _*) 
関連する問題