嘿,我有这样的 Dataframe :
+----------+----------+------------------+
| id_A| id_B| Distance |
+----------+----------+------------------+
| 120745612| 122913167|0.6142857142857143|
|1243257970| 370926553|0.8061224489795918|
|1305652409| 253051944|0.8252427184466019|
|1350805455| 311286173|0.5789473684210527|
|1544864070| 390580289|0.7894736842105263|
| 164533143| 763751752|0.8153846153846154|
|1683553267| 787287056|0.9117647058823529|
| 175951349| 175951349| 0.0|
现在我想用id_A
进行分组,并得到id_B
的列表,按Distance
值的升序排列。这意味着在Distance
最小的地方,我想把id_B
的相应值放在列表的第一位,依此类推。
预期输出(_O):
| id_A | id_B |
175951349 [175951349, 390580289, ...]
2条答案
按热度按时间pes8fvy91#
首先使用
collect_list
函数构造一个struct的数组,然后使用array_sort
根据struct中的Distance
字段进行排序,最后使用transform
函数将数组转换为您需要的格式。brccelvz2#
为此,您可以先将
id_B
和Distance
合并为Struct,然后使用array_sort基于Distance
进行排序,最后提取所需字段数据准备
结构-数组排序