📅  最后修改于: 2023-12-03 15:10:08.644000             🧑  作者: Mango
在 PySpark 中,我们可以使用 orderBy
方法按列对数据框进行排序。
orderBy(*cols: Union[str, Column, List[Union[str, Column]]], **kwargs) -> 'DataFrame'
其中,cols
参数可以是一个列名字符串、一个 Column
对象或列名字符串的列表,用于指定要按哪些列排序。
kwargs
参数用于指定排序的方式,常用的参数如下:
ascending
:是否升序排序,默认为 True
。na_position
:缺失值所在位置,可选值为 first
和 last
,默认为 last
。假设我们有如下数据框:
from pyspark.sql.functions import rand
data = [(1, "C"), (3, "A"), (2, "B"), (4, None)]
df = spark.createDataFrame(data, ["id", "name"]).orderBy(rand())
df.show()
输出如下:
+---+----+
| id|name|
+---+----+
| 1| C|
| 2| B|
| 3| A|
| 4|null|
+---+----+
我们可以按 id
列升序排序:
df.orderBy("id").show()
输出如下:
+---+----+
| id|name|
+---+----+
| 1| C|
| 2| B|
| 3| A|
| 4|null|
+---+----+
也可以按 name
列降序排序:
from pyspark.sql.functions import desc
df.orderBy(desc("name")).show()
输出如下:
+---+----+
| id|name|
+---+----+
| 3| A|
| 2| B|
| 1| C|
| 4|null|
+---+----+
我们可以指定多个列排序:
df.orderBy(["name", "id"]).show()
输出如下:
+---+----+
| id|name|
+---+----+
| 3| A|
| 2| B|
| 1| C|
| 4|null|
+---+----+
我们还可以按照缺失值所在的位置排序:
df.orderBy("name", na_position="first").show()
输出如下:
+---+----+
| id|name|
+---+----+
| 3| A|
| 2| B|
| 1| C|
| 4|null|
+---+----+
以上就是按列数据框 pyspark 排序的介绍和示例。