📜  如何命名 PySpark DataFrame 中的聚合列?(1)

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

如何命名 PySpark DataFrame 中的聚合列?

在 PySpark 中,聚合操作经常使用到。在使用 groupBy 和聚合操作时,PySpark 会自动为聚合后的结果生成一列名为“聚合函数(列名)”。但是有时候,我们可能需要自定义这列的名字。下面介绍两种方法来命名 PySpark DataFrame 中的聚合列。

方法一:使用 withColumnRenamed() 方法

withColumnRenamed() 方法可以修改 DataFrame 中的列名。我们可以在聚合操作后使用该方法来命名聚合列。示例如下:

from pyspark.sql.functions import sum

# 创建 DataFrame
df = spark.createDataFrame([(1, "A", 100), (2, "B", 200), (1, "A", 300)], ["id", "name", "value"])

# 对 value 列进行求和,并命名为 total_value
df_agg = df.groupBy("id").agg(sum("value").alias("total_value"))

df_agg.show()

运行结果为:

+---+-----------+
| id|total_value|
+---+-----------+
|  1|        400|
|  2|        200|
+---+-----------+
方法二:使用 select() 方法

select() 方法可以选取 DataFrame 中的列,并返回一个新的 DataFrame。我们可以在聚合操作后使用该方法来选择需要的列,并为聚合列自定义列名。示例如下:

from pyspark.sql.functions import sum

# 创建 DataFrame
df = spark.createDataFrame([(1, "A", 100), (2, "B", 200), (1, "A", 300)], ["id", "name", "value"])

# 对 value 列进行求和,并命名为 total_value
df_agg = df.groupBy("id").agg(sum("value").alias("total_value")).select("id", "total_value")

df_agg.show()

运行结果与方法一相同。

需要注意的是,使用 select() 方法需要手动选择需要的列,如果 DataFrame 中有大量列需要选择,使用 withColumnRenamed() 方法可能更加便捷。

以上就是如何命名 PySpark DataFrame 中的聚合列的方法,希望对大家有所帮助。