pyspark在每行中都有列插入列表

时间:2019-05-13 06:34:06

标签: python pyspark apache-spark-sql pyspark-sql

我有一个df,其中一列为type,我有两个列表

women = ['0980981', '0987098']
men = ['1234567', '4567854']

现在我想基于type列的值添加另一列,如下所示:

from pyspark.sql import functions as psf
df_ = df.withColumn('new_col', psf.when(psf.col('type') == 'men', men).when(psf.col('type') == 'women', women))

但是我想我们不能直接插入列表,因为我们可以在Scala中插入Array('1234567', '4567854')。 我也尝试过psf.lit(men),但是没有运气。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

使用pyspark.sql.functions.array,它接受​​list列表达式,并返回Array类型的单个列表达式,以及对{{1}的list理解}:

men

输出:

men = ['1234567', '4567854']

df = spark.createDataFrame([['women'], ['men']], 'type: string')
df.withColumn('new_col', F.when(F.col('type') == 'men', F.array([F.lit(string) for string in men]))).show()