在pandas数据帧中,我能够做到
df2 = df.groupBy('name').agg({'id': 'first', 'grocery': ','.join})
从…
name id grocery
Mike 01 Apple
Mike 01 Orange
Kate 99 Beef
Kate 99 Wine
至
name id grocery
Mike 01 Apple,Orange
Kate 99 Beef,Wine
因为同一个人的多行id是相同的,所以我只取每个人的第一个id,然后连接杂货店。
我似乎不能让这个在pyspark中工作。我怎么能在pyspark中做同样的事情呢?我希望杂货店是串的而不是列表
发布于 2020-07-01 03:32:44
使用collect_list
将元素收集到列表中,然后使用concat_ws
将列表作为字符串连接起来
import pyspark.sql.functions as f
df.groupBy("name")
.agg(
f.first("id").alias("id"),
f.concat_ws(",", f.collect_list("grocery")).alias("grocery")
).show()
#+----+---+------------+
#|name| id| grocery|
#+----+---+------------+
#|Kate| 99| Beef,Wine|
#|Mike| 01|Apple,Orange|
#+----+---+------------+
https://stackoverflow.com/questions/62664691
复制相似问题