當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python PySpark DataFrame sort方法用法及代碼示例


PySpark DataFrame 的 sort(~) 方法返回一個新的 DataFrame,其中行根據指定列進行排序。

參數

1.cols | stringlistColumn

用於對行進行排序的列。

2. ascending | booleanlist | optional

是否按升序或降序排序。默認情況下,ascending=True

返回值

PySpark 數據幀。

例子

考慮以下PySpark DataFrame:

df = spark.createDataFrame([["Alex", 30], ["Bob", 20], ["Cathy", 20]], ["name", "age"])
df.show()



+-----+---+
| name|age|
+-----+---+
| Alex| 30|
|  Bob| 20|
|Cathy| 20|
+-----+---+

按單列升序對 PySpark DataFrame 進行排序

要按 age 列按升序對 PySpark DataFrame 進行排序:

df.sort("age").show()   # ascending=True



+-----+---+
| name|age|
+-----+---+
|Cathy| 20|
|  Bob| 20|
| Alex| 30|
+-----+---+

我們還可以使用sql.functions來引用該列:

import pyspark.sql.functions as F
df.sort(F.col("age")).show()



+-----+---+
| name|age|
+-----+---+
|Cathy| 20|
|  Bob| 20|
| Alex| 30|
+-----+---+

按單列降序對 PySpark DataFrame 進行排序

要按 age 列降序對 PySpark DataFrame 進行排序:

df.sort("age", ascending=False).show()



+-----+---+
| name|age|
+-----+---+
| Alex| 30|
|  Bob| 20|
|Cathy| 20|
+-----+---+

按多列對 PySpark DataFrame 進行排序

要首先按 age 列對 PySpark 數據幀進行排序,然後按 name 列進行升序排序:

df.sort(["age", "name"]).show()



+-----+---+
| name|age|
+-----+---+
|  Bob| 20|
|Cathy| 20|
| Alex| 30|
+-----+---+

此處,BobCathy 出現在 Alex 之前,因為它們的年齡 ( 20 ) 較小。 Bob 然後出現在 Cathy 之前,因為 B 出現在 C 之前。

我們還可以傳遞布爾值列表來指定每列所需的順序:

df.sort(["age", "name"], ascending=[True, False]).show()



+-----+---+
| name|age|
+-----+---+
|Cathy| 20|
|  Bob| 20|
| Alex| 30|
+-----+---+

在這裏,我們首先按age升序排序,然後按name降序排序。

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 PySpark DataFrame | sort method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。