mhn*_*mhn 21 python scala apache-spark apache-spark-sql pyspark
我需要在下面一行中得到的数据框,在groupBy之后的max('diff')列中有一个别名"maxDiff".但是,下面的行不做任何改变,也不会抛出错误.
grpdf = joined_df.groupBy(temp1.datestamp).max('diff').alias("maxDiff")
Run Code Online (Sandbox Code Playgroud)
zer*_*323 53
您可以使用agg而不是调用max方法:
from pyspark.sql.functions import max
joined_df.groupBy(temp1.datestamp).agg(max("diff").alias("maxDiff"))
Run Code Online (Sandbox Code Playgroud)
同样在Scala中
import org.apache.spark.sql.functions.max
joined_df.groupBy($"datestamp").agg(max("diff").alias("maxDiff"))
Run Code Online (Sandbox Code Playgroud)
要么
joined_df.groupBy($"datestamp").agg(max("diff").as("maxDiff"))
Run Code Online (Sandbox Code Playgroud)
Nho*_*hor 26
这是因为你是整个DataFrame对象的别名,而不是Column.这是一个如何别名的例子Column:
import pyspark.sql.functions as func
grpdf = joined_df \
.groupBy(temp1.datestamp) \
.max('diff') \
.select(func.col("max(diff)").alias("maxDiff"))
Run Code Online (Sandbox Code Playgroud)
除了此处已有的答案外,如果您知道聚合列的名称,则以下也是方便的方法,您不必从中导入pyspark.sql.functions:
1
grouped_df = joined_df.groupBy(temp1.datestamp) \
.max('diff') \
.selectExpr('max(diff) AS maxDiff')
Run Code Online (Sandbox Code Playgroud)
有关信息,请参阅文档.selectExpr()
2
grouped_df = joined_df.groupBy(temp1.datestamp) \
.max('diff') \
.withColumnRenamed('max(diff)', 'maxDiff')
Run Code Online (Sandbox Code Playgroud)
看 信息,文档.withColumnRenamed()
这里的答案更详细:https : //stackoverflow.com/a/34077809
| 归档时间: |
|
| 查看次数: |
36453 次 |
| 最近记录: |