(配列内の値は文字列です):スパークデータフレームは:新しい列にリストを追加(のpython)私は、次のデータフレームを持っています
+--------------------+--------------------+
| col1| col2|
+--------------------+--------------------+
| [value1, value2]| [value3,value4]|
| [value5]| [value6]|
+--------------------+--------------------+
は、どのように私を含む新しい配列を持つ新しい列を作成することができ、すべての両方
+--------------------+--------------------+------------------------------+
| col1| col2| new |
+--------------------+--------------------+------------------------------+
| [value1, value2]| [value3,value4]|[value1, value2,value3,value4]|
| [value5]| [value6]| [value5,value6]|
+--------------------+--------------------+------------------------------+
の値は、私は次のことを試してみました:
def add_function(col1,col2):
return col1+col2
udf_add = udf(add_function,ArrayType(StringType()))
dftrial.withColumn("new",udf_add("col1","col2")).show(2)
必要に応じてタスクを実行しません。
def add_function(col1,col2):
return col1.extend(col2)
それはnull
値を返します。しかし、私は私がadd_function
を変更する際に理由を理解しません。どうして?
私の主な質問:このタスクを実装する別の方法はありますか?既に実装されている関数ですか?私はconcat
を見つけましたが、それは文字列に対してのみ機能するようです。
ご回答ありがとうございます。私は決して何をすべきではないかを明確にすることができますか?私はそれを正確に理解しなかったので、私が紛失しているという重要な情報であるようです。 –
'list.extend'は、既存の' list'を変更(変更)します。あなたのデータでこれをしないでください。明示的に許可されない限り、常に新しいオブジェクトを返します( 'RDD.fold'、' RDD.aggregate'などを参照) – zero323