📅  最后修改于: 2023-12-03 15:39:48.312000             🧑  作者: Mango
在 PySpark 中,我们可以使用 sort
方法对 DataFrame 列进行排序。sort 方法支持对单个或多个列按升序或降序排序,并返回一个新的 DataFrame。
# 导入 PySpark 模块
from pyspark.sql.functions import desc
# 创建一个 DataFrame
data = [("Alice", 25), ("Bob", 20), ("Charlie", 30)]
df = spark.createDataFrame(data, ["Name", "Age"])
# 按 Age 列升序排列
df_asc = df.sort("Age")
# 按 Age 列降序排列
df_desc = df.sort(desc("Age"))
# 显示排序后的结果
df_asc.show()
df_desc.show()
输出:
+-------+---+
| Name|Age|
+-------+---+
| Bob| 20|
| Alice| 25|
|Charlie| 30|
+-------+---+
+-------+---+
| Name|Age|
+-------+---+
|Charlie| 30|
| Alice| 25|
| Bob| 20|
+-------+---+
# 创建一个 DataFrame
data = [("Alice", 25, "M"),
("Bob", 20, "F"),
("Charlie", 30, "M"),
("David", 20, "M")]
df = spark.createDataFrame(data, ["Name", "Age", "Gender"])
# 按 Gender 列升序排列,如果 Gender 相同则按 Age 列降序排列
df_asc = df.sort("Gender", desc("Age"))
# 显示排序后的结果
df_asc.show()
输出:
+-------+---+------+
| Name|Age|Gender|
+-------+---+------+
| Alice| 25| M|
| David | 20| M|
|Charlie| 30| M|
| Bob| 20| F|
+-------+---+------+
在上面的示例中,我们按 Gender 列升序排列,并在 Gender 相同的情况下按 Age 列降序排列。
注意:在排序 DataFrame 时,我们需要使用 desc
函数对需要按降序排序的列进行处理。如果没有使用 desc
函数,则将会按升序排序。