我试图获取我的数据框的一列的前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/