报告pyspark数据框中列的前3个最大值[重复]

Posted

技术标签:

【中文标题】报告pyspark数据框中列的前3个最大值[重复]【英文标题】:Report the top-3 maximum values of a column in pyspark dataframe [duplicate] 【发布时间】:2022-01-23 21:59:06 【问题描述】:

我在 Spark 中有这个数据框:

我需要找到 PM10 的最大值,我用这段代码做到了:

max_value = df.agg("PM10": "max").show()

这个输出:

我想要相同的输出,但只选择 PM10 的 3 个最大值。 我尝试过使用 .collect() 和 .head(),但这绝对不是正确的方法。

谢谢。

【问题讨论】:

【参考方案1】:

您可以使用orderBy on PM10 降序排列数据框并应用limit

from pyspark.sql import functions as F

data = [("s1", "1/1/2016", 20.5,),
        ("s2", "1/1/2016", 30.1,),
        ("s1", "1/1/2016", 60.2,),
        ("s2", "1/1/2016", 20.4,),
        ("s1", "1/1/2016", 55.5,),
        ("s2", "1/1/2016", 52.5,), ]

df = spark.createDataFrame(data, ("sensorId", "date", "PM10", ))

df.select("PM10").orderBy(F.desc(F.col("PM10"))).limit(3).show()

输出

+----+
|PM10|
+----+
|60.2|
|55.5|
|52.5|
+----+

【讨论】:

以上是关于报告pyspark数据框中列的前3个最大值[重复]的主要内容,如果未能解决你的问题,请参考以下文章

如何更改pyspark数据框中列的顺序?

使用 R [重复] 更改数据框中列的顺序

动态填充pyspark数据框中列中的行

从 pyspark 数据框中获取多个(100+)列的空计数、最小值和最大值的最佳方法

计算数据框中列的汇总统计信息

检索任意行以获取数据框中列的唯一组合