我有一个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)
,但是没有运气。
有什么想法吗?
答案 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()