2024-09-25 06:36:15 发布
网友
我需要下面一行的结果数据框,以便在groupBy后面的max('diff')列有一个别名“maxDiff”。但是,下面的行不会进行任何更改,也不会抛出错误。
grpdf = joined_df.groupBy(temp1.datestamp).max('diff').alias("maxDiff")
除了这里已经给出的答案之外,如果您知道聚合列的名称(在这里您不必从pyspark.sql.functions导入),以下也是方便的方法:
pyspark.sql.functions
1
grouped_df = joined_df.groupBy(temp1.datestamp) \ .max('diff') \ .selectExpr('max(diff) AS maxDiff')
有关.selectExpr()的信息,请参见docs
.selectExpr()
2
grouped_df = joined_df.groupBy(temp1.datestamp) \ .max('diff') \ .withColumnRenamed('max(diff)', 'maxDiff')
有关.withColumnRenamed()的信息,请参见docs
.withColumnRenamed()
这里的答案更详细:https://stackoverflow.com/a/34077809
这是因为您正在对整个DataFrame对象进行别名,而不是Column。下面是一个如何仅对Column进行别名的示例:
DataFrame
Column
import pyspark.sql.functions as func grpdf = joined_df \ .groupBy(temp1.datestamp) \ .max('diff') \ .select(func.col("max(diff)").alias("maxDiff"))
您可以使用agg而不是调用max方法:
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
有关
.selectExpr()
的信息,请参见docs2
有关
.withColumnRenamed()
的信息,请参见docs这里的答案更详细:https://stackoverflow.com/a/34077809
这是因为您正在对整个
DataFrame
对象进行别名,而不是Column
。下面是一个如何仅对Column
进行别名的示例:您可以使用
agg
而不是调用max
方法:在Scala中类似
或者
相关问题 更多 >
编程相关推荐