📅  最后修改于: 2023-12-03 15:12:28.516000             🧑  作者: Mango
在 PySpark 中,我们可以使用聚合操作对 DataFrame 进行分组并计算统计数据。在这个过程中,我们可能需要对聚合后的列名进行修改,以便更容易地理解结果。
本文将介绍如何在 PySpark 中重命名聚合的列。
我们可以使用 alias
方法来为单个聚合列进行重命名。例如,假设我们有以下 DataFrame:
from pyspark.sql.functions import avg
df = spark.createDataFrame([(1, "A", 10), (1, "B", 20), (2, "C", 15)], ["id", "name", "value"])
result = df.groupBy("id").agg(avg("value"))
result.show()
输出结果为:
+---+----------+
| id|avg(value)|
+---+----------+
| 1| 15.0|
| 2| 15.0|
+---+----------+
现在,我们想将 avg(value)
列重命名为 average
,我们可以使用 alias
方法:
renamed_result = result.select("id", result["avg(value)"].alias("average"))
renamed_result.show()
输出结果为:
+---+-------+
| id|average|
+---+-------+
| 1| 15.0|
| 2| 15.0|
+---+-------+
在这个例子中,我们通过 select
方法选择了 id
和 avg(value)
列,并使用 alias
方法将 avg(value)
列重命名为 average
。
如果我们有多个聚合列需要重命名,我们可以使用 withColumnRenamed
方法。假设我们有以下 DataFrame:
from pyspark.sql.functions import sum, avg
df = spark.createDataFrame([(1, "A", 10, 100), (1, "B", 20, 200), (2, "C", 15, 150)], ["id", "name", "value1", "value2"])
result = df.groupBy("id").agg(sum("value1"), avg("value2"))
result.show()
输出结果为:
+---+-----------+-----------+
| id|sum(value1)|avg(value2)|
+---+-----------+-----------+
| 1| 30| 150.0|
| 2| 15| 150.0|
+---+-----------+-----------+
现在,我们想将 sum(value1)
列重命名为 total
,avg(value2)
列重命名为 average
,我们可以使用 withColumnRenamed
方法:
renamed_result = result.withColumnRenamed("sum(value1)", "total").withColumnRenamed("avg(value2)", "average")
renamed_result.show()
输出结果为:
+---+-----+-------+
| id|total|average|
+---+-----+-------+
| 1| 30| 150.0|
| 2| 15| 150.0|
+---+-----+-------+
在这个例子中,我们通过 withColumnRenamed
方法将 sum(value1)
列重命名为 total
,将 avg(value2)
列重命名为 average
。注意,withColumnRenamed
方法返回一个新的 DataFrame,因此我们需要将结果赋值给一个新的变量。