【问题标题】:pyspark withcolumn insert list in each rowpyspark withcolumn 在每行中插入列表
【发布时间】:2019-05-13 15:09:43
【问题描述】:

我有一个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),但没有运气。

你知道怎么做吗?

【问题讨论】:

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


    【解决方案1】:

    使用pyspark.sql.functions.array,它接受list的列表达式并返回Array类型的单列表达式,并结合listmen的理解:

    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()
    

    输出:

    +-----+------------------+
    | type|           new_col|
    +-----+------------------+
    |women|              null|
    |  men|[1234567, 4567854]|
    +-----+------------------+
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2023-01-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-04
      相关资源
      最近更新 更多