gpt4 book ai didi

python - 如何在 PySpark 中进行聚合和转置?

转载 作者:行者123 更新时间:2023-12-01 06:50:58 25 4
gpt4 key购买 nike

我想对非数字字段进行一些聚合,例如collect_list,然后根据不同的列转置到多个列。

这是一个简单的数据集和我想要的结果。

df = sqlContext.createDataFrame([
("John", 'Male', 'GA'),
("Mary", "Female", 'GA'),
("Alex", "Male", "NY"),
("Ana", "Female", "NY"),
("Amy", "Female", "NY")
], ["Name", "gender", "state"])

我可以按如下所示按 2 个字段进行分组。

(df
.groupBy('state', 'gender')
.agg(collect_list('Name'))
).show()
+-----+------+------------------+
|state|gender|collect_list(Name)|
+-----+------+------------------+
| NY| Male| [Alex]|
| GA| Male| [John]|
| GA|Female| [Mary]|
| NY|Female| [Ana, Amy]|
+-----+------+------------------+

如何根据性别字段将其转置为两个字段?这就是我要找的。

state |   male   | female
--------------------------
GA | ['John'] | ['Mary']
NY | ['Alex'] | ['Ana', 'Amy']

最佳答案

您可以使用 pivot() 转置在groupby之后。 Spark还有一个collect_list()聚合。

df.groupBy('state').pivot('gender').agg(F.collect_list('Name')).show()

# +-----+----------+------+
# |state| Female| Male|
# +-----+----------+------+
# | NY|[Ana, Amy]|[Alex]|
# | GA| [Mary]|[John]|
# +-----+----------+------+

关于python - 如何在 PySpark 中进行聚合和转置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59004531/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com