簡體   English   中英

pyspark中groupBy之后的列別名

[英]Column alias after groupBy in pyspark

我需要下一行中的結果數據框,以便在 groupBy 之后為 max('diff') 列使用別名“maxDiff”。 但是,下面的行不會進行任何更改,也不會引發錯誤。

 grpdf = joined_df.groupBy(temp1.datestamp).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"))

這是因為您正在為整個DataFrame對象設置別名,而不是Column 以下是如何僅為Column設置別名的示例:

import pyspark.sql.functions as func

grpdf = joined_df \
    .groupBy(temp1.datestamp) \
    .max('diff') \
    .select(func.col("max(diff)").alias("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()信息,請參閱文檔

這里的答案更詳細: https : //stackoverflow.com/a/34077809

您可以使用。

grouped_df = grpdf.select(col("max(diff)") as "maxdiff",col("sum(DIFF)") as "sumdiff").show()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM