因此,我必须从此数据集中获取n个(默认为3个)最大元素。如何在PySpark中以可接受的方式执行此操作?我知道如何在Pandas中执行此操作,但是我想知道如何在PySpark中有效执行此操作,或者是否可以高效执行。我的第一个想法是从pyspark.sql.functions这样使用[]
ls = [] cols = df_tmp.columns[:-1] for j in cols: max_v = df_tmp.where(df_tmp["Variable"] == j).select(F.greatest(*[F.col(col) for col in cols])) ls.append(max_v.collect()[0][0]) return ls.max
但是这似乎是一个非常糟糕的方法,因为它会返回最大值(0.984),而不是组合值(Charlie,Foxtrot)。另外,在不重写单元格(Charlie,Foxtrot)中的值的情况下,我看不到如何获得第二大值,这是我认为您不应该在PySpark中执行的操作。
谢谢您阅读本文,尤其是对可能回答的所有人:)
所以我必须从该数据集中获取n个(默认为3个)最大元素。如何在PySpark中以可接受的方式执行此操作?我知道如何在Pandas中执行此操作,但是我想知道如何在...
您可以union从Alpha到Foxtrot的所有列来创建具有三列(数值,变量列,值的列名)的数据框。请看下面的例子: