在pyspark的窗口中获取最大值

迪伦

我在pyspark的特定窗口中获得了最大值。但是从该方法返回的结果不是预期的。

这是我的代码:

test = spark.createDataFrame(DataFrame({'grp': ['a', 'a', 'b', 'b'], 'val': [2, 3, 3, 4]}))
win = Window.partitionBy('grp').orderBy('val')
test = test.withColumn('row_number', F.row_number().over(win))
test = test.withColumn('max_row_number', F.max('row_number').over(win))
display(test)

输出为:

在此处输入图片说明

我希望对于“ a”组和“ b”组都将返回2,但是没有。

有人对这个问题有想法吗?非常感谢!

大卫·威洛

这里的问题在于max功能的框架如果您在执行操作时订购窗口,框架将会是Window.unboundedPreceding, Window.currentRow因此,您可以定义另一个放置订单的窗口(因为max函数不需要它):

w2 = Window.partitionBy('grp')

您可以在PySpark文档中看到

注意当未定义排序时,默认情况下使用无边界窗口框架(rowFrame,unboundedPreceding,unboundedFollowing)。定义排序时,默认情况下使用增长的窗口框架(rangeFrame,unboundedPreceding,currentRow)。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

pySpark-在滚动窗口中获取最大值行

来自分类Dev

Pyspark 获取最大值排除 NaN

来自分类Dev

pyspark通过窗口迭代计算累计最大值

来自分类Dev

pyspark:grouby,然后获取每个组的最大值

来自分类Dev

WSO2 CEP - 时间窗口中的 SIDDHI 最大值函数返回空

来自分类Dev

熊猫:在滚动窗口中找到最大值,然后为最大值行返回另一列的总和,然后继续四行

来自分类Dev

获取列的最大值

来自分类Dev

从RichTextBox获取最大值

来自分类Dev

Pyspark - 从具有最小值和最大值范围的数组中获取值

来自分类Dev

从行窗口获取最大值作为所有行的新列

来自分类Dev

在PySpark列的列表列表中获取第一个元素的最大值

来自分类Dev

从字典中获取最大值

来自分类Dev

PHP从数组获取多个最大值

来自分类Dev

获取字段Morphia的最大值

来自分类Dev

获取组中最大值的ID

来自分类Dev

获取随机选择的最大值

来自分类Dev

获取列和ID的最大值

来自分类Dev

获取矩阵中最大值的位置

来自分类Dev

从SML列表中获取最大值

来自分类Dev

获取屏幕宽度并计算最大值

来自分类Dev

angularjs在某些列上获取最大值

来自分类Dev

在Java中获取最大值sql

来自分类Dev

从每个组的Oracle获取最大值

来自分类Dev

Django获取分组数据的最大值

来自分类Dev

获取列中行的子集的最大值

来自分类Dev

获取几个int参数的最大值

来自分类Dev

获取Java字符的最大值

来自分类Dev

获取对象属性的最大值

来自分类Dev

获取不工作的节点的最大值