在 pyspark 数据框中检索最大值时遇到问题

Posted

技术标签:

【中文标题】在 pyspark 数据框中检索最大值时遇到问题【英文标题】:Having trouble on retrieving max values in a pyspark dataframe 【发布时间】:2020-06-18 16:41:00 【问题描述】:

在我通过使用窗口和对一组列进行分区来计算 pyspark 数据帧中每一行的 5 行内的数量平均值之后

from pyspark.sql import functions as F
prep_df = ...
window = Window.partitionBy([F.col(x) for x in group_list]).rowsBetween(Window.currentRow, Window.currentRow + 4)
consecutive_df = prep_df.withColumn('aveg', F.avg(prep_df['quantity']).over(window))

我正在尝试与同一组进行分组并选择平均值的最大值,如下所示:

grouped_consecutive_df = consecutive_df.groupBy(group_column_list).agg(F.max(consecutive_df['aveg']).alias('aveg'))

但是,当我调试时,我发现计算出的最大值是错误的。对于特定情况,我看到检索到的最大数字甚至不在“平均”列中。

我想问一下我是否采取了错误的方法或遗漏了一些琐碎的事情。任何 cmets 都表示赞赏。

【问题讨论】:

【参考方案1】:

我可以通过这样的解决方法来解决这个问题:在聚合之前,我将数量平均值的最大值映射到另一个新列,然后我选择了组中的一个行。

【讨论】:

以上是关于在 pyspark 数据框中检索最大值时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

从 PySpark 中的数据框中删除重复项

从 PySpark 中的数据框中删除重复项

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

使用 pyspark 跟踪和查找数据框中的最新值

在pyspark数据框中的两个日期之间生成每月时间戳

删除 Spark 数据框中的空格时出错 - PySpark