Pyspark将StructType列聚合为每个lin的元素数组

2024-09-30 10:36:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试做一些看起来很简单的事情,但是不知怎么的,我不知道怎么用pyspark来做。在

我有一个包含两列的df(为了简化)“id”和“strcol”,其中可能有重复的id

我想做一个数据框groupBy('id'),它将为每个id返回strcol值的数组

简单示例:

|--id--|--strCol--|
|   a  |  {'a':1} |
|   a  |  {'a':2} |
|   b  |  {'b':3} |
|   b  |  {'b':4} |
|------|----------|
would become
|--id--|-------aggsStr------|
|   a  |  [{'a':1},{'a':2}] |
|   b  |  [{'b':3},{'b':4}] |
|------|--------------------|

我尝试使用apply和pandas udf,但它似乎拒绝返回数组。(或者我没有正确使用它)


Tags: 数据id示例pandasdf数组事情pyspark
1条回答
网友
1楼 · 发布于 2024-09-30 10:36:29

您可以使用pyspark.sql.functions模块中的^{}

from pyspark.sql import functions as F
agg = df.groupby("id").agg(F.collect_list("strCol"))

一个功能齐全的例子:

^{pr2}$

希望这有帮助!在

相关问题 更多 >

    热门问题