pyspark 中 groupBy 后的列别名
Column alias after groupBy in pyspark
我需要下面一行中的结果数据框,以便在 groupBy 之后的 max('diff') 列有一个别名 "maxDiff"。然而,下面的行没有做任何改变,也没有抛出错误。
grpdf = joined_df.groupBy(temp1.datestamp).max('diff').alias("maxDiff")
这是因为您为整个 DataFrame
对象而不是 Column
添加了别名。以下是如何仅对 Column
设置别名的示例:
import pyspark.sql.functions as func
grpdf = joined_df \
.groupBy(temp1.datestamp) \
.max('diff') \
.select(func.col("max(diff)").alias("maxDiff"))
您可以使用 agg
而不是调用 max
方法:
from pyspark.sql.functions import max
joined_df.groupBy(temp1.datestamp).agg(max("diff").alias("maxDiff"))
在 Scala 中类似
import org.apache.spark.sql.functions.max
joined_df.groupBy($"datestamp").agg(max("diff").alias("maxDiff"))
或
joined_df.groupBy($"datestamp").agg(max("diff").as("maxDiff"))
除了这里已有的答案之外,如果您知道聚合列的名称,以下也是方便的方法,您不必从 pyspark.sql.functions
:
导入
1
grouped_df = joined_df.groupBy(temp1.datestamp) \
.max('diff') \
.selectExpr('max(diff) AS maxDiff')
有关 .selectExpr()
的信息,请参阅 docs
2
grouped_df = joined_df.groupBy(temp1.datestamp) \
.max('diff') \
.withColumnRenamed('max(diff)', 'maxDiff')
有关 .withColumnRenamed()
的信息,请参见 docs
这里的答案更详细:
你可以使用。
grouped_df = grpdf.select(col("max(diff)") as "maxdiff",col("sum(DIFF)") as "sumdiff").show()
我需要下面一行中的结果数据框,以便在 groupBy 之后的 max('diff') 列有一个别名 "maxDiff"。然而,下面的行没有做任何改变,也没有抛出错误。
grpdf = joined_df.groupBy(temp1.datestamp).max('diff').alias("maxDiff")
这是因为您为整个 DataFrame
对象而不是 Column
添加了别名。以下是如何仅对 Column
设置别名的示例:
import pyspark.sql.functions as func
grpdf = joined_df \
.groupBy(temp1.datestamp) \
.max('diff') \
.select(func.col("max(diff)").alias("maxDiff"))
您可以使用 agg
而不是调用 max
方法:
from pyspark.sql.functions import max
joined_df.groupBy(temp1.datestamp).agg(max("diff").alias("maxDiff"))
在 Scala 中类似
import org.apache.spark.sql.functions.max
joined_df.groupBy($"datestamp").agg(max("diff").alias("maxDiff"))
或
joined_df.groupBy($"datestamp").agg(max("diff").as("maxDiff"))
除了这里已有的答案之外,如果您知道聚合列的名称,以下也是方便的方法,您不必从 pyspark.sql.functions
:
1
grouped_df = joined_df.groupBy(temp1.datestamp) \
.max('diff') \
.selectExpr('max(diff) AS maxDiff')
有关 .selectExpr()
2
grouped_df = joined_df.groupBy(temp1.datestamp) \
.max('diff') \
.withColumnRenamed('max(diff)', 'maxDiff')
有关 .withColumnRenamed()
这里的答案更详细:
你可以使用。
grouped_df = grpdf.select(col("max(diff)") as "maxdiff",col("sum(DIFF)") as "sumdiff").show()