📌  相关文章
📜  按升序或降序对 PySpark DataFrame 列进行排序(1)

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

对 PySpark DataFrame 列进行排序

在 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 函数,则将会按升序排序。