【问题标题】:How to add a column to pyspark df, the data format should be a list, and come from grouped data from the raw table如何在pyspark df中添加列,数据格式应该是列表,并且来自原始表中的分组数据
【发布时间】:2021-12-28 14:05:12
【问题描述】:

我是 pyspark 的新手,不确定是否有简单的方法来做到这一点。

我有一个与人们感兴趣的 df,例如:

name interest
A gym
A food
A games
B games

从这个df,我想创建一个新的,如下所示:

name interests
A gym;food;games
B games

有人可以帮忙吗?如果我没有足够清楚地解释这个问题,请提前道歉。

【问题讨论】:

    标签: python dataframe pyspark apache-spark-sql


    【解决方案1】:

    您可以使用来自pyspark.sql.functionsconcat_wscollect_list

    from pyspark.sql import functions as F
    
    df.groupBy("name").agg(
      F.concat_ws(";", F.collect_list("interest")
                 ).alias("interest")).show(truncate=False)
    

    打印:

    +----+--------------+
    |name|interest      |
    +----+--------------+
    |A   |gym;food;games|
    |B   |games         |
    +----+--------------+
    

    记得把它分配回一个新的数据框

    • concat_ws:使用给定的分隔符将多个输入字符串列连接到一个字符串列中。
    • collect_list:

    【讨论】:

      【解决方案2】:
      schema = X.schema
      X_pd = X.toPandas()
      _X = spark.createDataFrame(X_pd,schema=schema)
      del X_pd
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        • 2020-11-17
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多