我试图获取我的数据框的一列的前5个值。

数据框的示例如下。实际上,原始数据帧具有数千行。

Row(item_id=u'2712821', similarity=5.0)
Row(item_id=u'1728166', similarity=6.0)
Row(item_id=u'1054467', similarity=9.0)
Row(item_id=u'2788825', similarity=5.0)
Row(item_id=u'1128169', similarity=1.0)
Row(item_id=u'1053461', similarity=3.0)

我想出的解决方案是对所有数据框进行排序,然后采用前5个值。 (下面的代码可以做到这一点)
items_of_common_users.sort(items_of_common_users.similarity.desc()).take(5)

我想知道是否有更快的方法来实现这一目标。
谢谢

最佳答案

您可以将RDD.top方法与key结合使用:

from operator import attrgetter

df.rdd.top(5, attrgetter("similarity"))

DataFrame转换为RDD会有很大的开销,但这应该是值得的。

关于apache-spark - 获取Pyspark数据框最大值的更有效方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/40832153/

10-10 15:31