我正在尝试获取数据框列的前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)
我想知道是否有更快的方法来实现这一目标。 感谢
答案 0 :(得分:2)
您可以将RDD.top
方法与key
:
from operator import attrgetter
df.rdd.top(5, attrgetter("similarity"))
DataFrame
转换为RDD
会产生很大的开销,但它应该值得。