gpt4 book ai didi

apache-spark - 使用pyspark分组,排序和汇总Spark数据框架

转载 作者:行者123 更新时间:2023-12-04 03:08:21 25 4
gpt4 key购买 nike

我有一个数据框,看起来像:

A     B    C
---------------
A1 B1 0.8
A1 B2 0.55
A1 B3 0.43

A2 B1 0.7
A2 B2 0.5
A2 B3 0.5

A3 B1 0.2
A3 B2 0.3
A3 B3 0.4


如何将“ C”列转换为每列A的相对排名(较高分数->较好排名)?预期产量:

A     B    Rank
---------------
A1 B1 1
A1 B2 2
A1 B3 3

A2 B1 1
A2 B2 2
A2 B3 2

A3 B1 3
A3 B2 2
A3 B3 1


我要达到的最终状态是汇总B列并存储每个A的排名:

例:

B    Ranks
B1 [1,1,3]
B2 [2,2,2]
B3 [3,2,1]

最佳答案

添加等级:

from pyspark.sql.functions import *
from pyspark.sql.window import Window

ranked = df.withColumn(
"rank", dense_rank().over(Window.partitionBy("A").orderBy(desc("C"))))


通过...分组:

grouped = ranked.groupBy("B").agg(collect_list(struct("A", "rank")).alias("tmp"))


排序并选择:

grouped.select("B", sort_array("tmp")["rank"].alias("ranks"))


在Spark 2.1.0上进行了测试。

关于apache-spark - 使用pyspark分组,排序和汇总Spark数据框架,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41661068/

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