我有一个带有 2 个 ArrayType 字段的 PySpark DataFrame:
>>>df
DataFrame[id: string, tokens: array<string>, bigrams: array<string>]
>>>df.take(1)
[Row(id='ID1', tokens=['one', 'two', 'two'], bigrams=['one two', 'two two'])]
我想将它们组合成一个 ArrayType 字段:
>>>df2
DataFrame[id: string, tokens_bigrams: array<string>]
>>>df2.take(1)
[Row(id='ID1', tokens_bigrams=['one', 'two', 'two', 'one two', 'two two'])]
适用于字符串的语法在这里似乎不起作用:
df2 = df.withColumn('tokens_bigrams', df.tokens + df.bigrams)
谢谢!
原文由 zemekeneng 发布,翻译遵循 CC BY-SA 4.0 许可协议
火花 >= 2.4
您可以使用
concat
函数 ( SPARK-23736 ):要在其中一个值为
NULL
时保留数据,您可以coalesce
与array
:火花 < 2.4
不幸的是连接
array
列在一般情况下你需要一个 UDF,例如这样的:可以用作: