在 Spark Dataframe 中连接包含列表值的列
Concatenate columns containing list values in Spark Dataframe
我有一个数据框 (spark),它有 2 列,每列都有列表值。我想创建一个连接 2 列(以及列内的列表值)的新列。
例如
第 1 列有一个行值 - [A,B]
第 2 列有一个行值 - [C,D]
"The output should be in a new column i.e. "
第 3 列(新创建的列)的行值为 - [A,B,C,D]
注:-
列值的值存储在 LIST
中
请帮我用pyspark实现这个。
谢谢
我们可以使用 UDF 作为,
>>> from pyspark.sql import functions as F
>>> from pyspark.sql.types import *
>>> udf1 = F.udf(lambda x,y : x+y,ArrayType(StringType()))
>>> df = df.withColumn('col3',udf1('col1','col2'))
作为一般规则,如果您想加入更多列表列,我建议使用 chain
from itertools
from itertools import chain
concat_list_columns = F.udf(lambda *list_: chain(*list_), ArrayType(StringType()))
因为 udf 占用大量内存,更好的解决方案是使用 pyspark 函数 concat:
from pyspark.sql import functions as F
F.concat(col1, col2, col3)
我有一个数据框 (spark),它有 2 列,每列都有列表值。我想创建一个连接 2 列(以及列内的列表值)的新列。 例如
第 1 列有一个行值 - [A,B]
第 2 列有一个行值 - [C,D]
"The output should be in a new column i.e. "
第 3 列(新创建的列)的行值为 - [A,B,C,D]
注:- 列值的值存储在 LIST
中请帮我用pyspark实现这个。 谢谢
我们可以使用 UDF 作为,
>>> from pyspark.sql import functions as F
>>> from pyspark.sql.types import *
>>> udf1 = F.udf(lambda x,y : x+y,ArrayType(StringType()))
>>> df = df.withColumn('col3',udf1('col1','col2'))
作为一般规则,如果您想加入更多列表列,我建议使用 chain
from itertools
from itertools import chain
concat_list_columns = F.udf(lambda *list_: chain(*list_), ArrayType(StringType()))
因为 udf 占用大量内存,更好的解决方案是使用 pyspark 函数 concat:
from pyspark.sql import functions as F
F.concat(col1, col2, col3)