【问题标题】:Pyspark : How to split pipe-separated column into multiple rows? [duplicate]Pyspark:如何将管道分隔的列拆分为多行? [复制]
【发布时间】:2020-12-07 04:04:15
【问题描述】:

我有一个包含以下内容的数据框:

movieId / movieName / genre
1         example1    action|thriller|romance
2         example2    fantastic|action

我想获得第二个数据帧(来自第一个),其中包含以下内容:

movieId / movieName / genre
1         example1    action
1         example1    thriller
1         example1    romance
2         example2    fantastic
2         example2    action

我们如何使用 pyspark 做到这一点?

【问题讨论】:

    标签: pyspark explode


    【解决方案1】:

    使用 split 函数将在数组上返回 array 然后 explode 函数。

    Example:

    df.show(10,False)
    #+-------+---------+-----------------------+
    #|movieid|moviename|genre                  |
    #+-------+---------+-----------------------+
    #|1      |example1 |action|thriller|romance|
    #+-------+---------+-----------------------+
    
    from pyspark.sql.functions import *
    
    df.withColumnRenamed("genre","genre1").\
    withColumn("genre",explode(split(col("genre1"),'\\|'))).\
    drop("genre1").\
    show()
    #+-------+---------+--------+
    #|movieid|moviename|   genre|
    #+-------+---------+--------+
    #|      1| example1|  action|
    #|      1| example1|thriller|
    #|      1| example1| romance|
    #+-------+---------+--------+
    

    【讨论】:

    • 谢谢。这也有效。 df.withColumn("genre",explode(split(col("genre"),'\\|'))).show() 添加genre1列然后删除它的任何原因?
    猜你喜欢
    • 1970-01-01
    • 2015-11-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多