📜  按列数据框 pyspark 排序 - Python (1)

📅  最后修改于: 2023-12-03 15:10:08.644000             🧑  作者: Mango

按列数据框 pyspark 排序 - Python

在 PySpark 中,我们可以使用 orderBy 方法按列对数据框进行排序。

语法
orderBy(*cols: Union[str, Column, List[Union[str, Column]]], **kwargs) -> 'DataFrame'

其中,cols 参数可以是一个列名字符串、一个 Column 对象或列名字符串的列表,用于指定要按哪些列排序。

kwargs 参数用于指定排序的方式,常用的参数如下:

  • ascending:是否升序排序,默认为 True
  • na_position:缺失值所在位置,可选值为 firstlast,默认为 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 排序的介绍和示例。