如何向pyspark df添加一列,数据格式应该是一个列表,并且来自原始table的分组数据
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 与人们的兴趣例如:
name
interest
A
gym
A
food
A
games
B
games
从这个 df,我想创建一个新的如下:
name
interests
A
gym;food;games
B
games
有人可以帮忙吗?如果我对问题的解释不够清楚,请提前道歉。
schema = X.schema
X_pd = X.toPandas()
_X = spark.createDataFrame(X_pd,schema=schema)
del X_pd
您可以使用 concat_ws
and collect_list
来自 pyspark.sql.functions
:
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
:
我是 pyspark 的新手,不确定是否有简单的方法。
我有一个 df 与人们的兴趣例如:
name | interest |
---|---|
A | gym |
A | food |
A | games |
B | games |
从这个 df,我想创建一个新的如下:
name | interests |
---|---|
A | gym;food;games |
B | games |
有人可以帮忙吗?如果我对问题的解释不够清楚,请提前道歉。
schema = X.schema
X_pd = X.toPandas()
_X = spark.createDataFrame(X_pd,schema=schema)
del X_pd
您可以使用 concat_ws
and collect_list
来自 pyspark.sql.functions
:
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
: