当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


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。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。