我有一个sparkDataframe,看起来像这样:
| time | col1 | col2 |
|----------------------|
| 123456 | 2 | A |
| 123457 | 4 | B |
| 123458 | 7 | C |
| 123459 | 5 | D |
| 123460 | 3 | E |
| 123461 | 1 | F |
| 123462 | 9 | G |
| 123463 | 8 | H |
| 123464 | 6 | I |
现在我需要对“col1”列进行排序,但其他列必须保持相同的顺序:(使用pyspark)
| time | col1 | col2 | col1_sorted |
|-----------------------------------|
| same | same | same | sorted |
|-----------------------------------|
| 123456 | 2 | A | 1 |
| 123457 | 4 | B | 2 |
| 123458 | 7 | C | 3 |
| 123459 | 5 | D | 4 |
| 123460 | 3 | E | 5 |
| 123461 | 1 | F | 6 |
| 123462 | 9 | G | 7 |
| 123463 | 8 | H | 8 |
| 123464 | 6 | I | 9 |
提前感谢您的帮助!
3条答案
按热度按时间tp5buhyn1#
对于spark 2.3.1,您可以尝试使用udf,如下所示(假设原始Dataframe按
time
(列)vecaoik12#
假设df是具有实际值的Dataframe:
zpgglvta3#
我自己的解决方案如下:
首先用col1选择并排序的col1复制df:
对两个Dataframe进行第二次索引:(对于df\u copy相同,只是使用windoworderby(“col1”))
最后一步,将col1重命名为col1\u排序并加入Dataframe