当前位置: 首页 > 知识库问答 >
问题:

pyspark中groupBy后的列别名

常子濯
2023-03-14

我需要下一行中的结果数据帧,以便在groupBy之后的max('diff')列具有别名“maxDiff”。但是,下面的行不会进行任何更改,也不会引发错误。

 grpdf = joined_df.groupBy(temp1.datestamp).max('diff').alias("maxDiff")

共有3个答案

华誉
2023-03-14

除了这里已经给出的答案之外,如果您知道聚合列的名称,那么以下也是方便的方法,您不必从pyspark导入。sql。功能:

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')

有关的信息,请参阅文档。

这里的答案更为详细:https://stackoverflow.com/a/34077809

邹祺然
2023-03-14

这是因为您混淆现象是整个DataFrame对象,而不是Col列。下面是一个如何仅别名的示例:

import pyspark.sql.functions as func

grpdf = joined_df \
    .groupBy(temp1.datestamp) \
    .max('diff') \
    .select(func.col("max(diff)").alias("maxDiff"))
欧阳何平
2023-03-14

您可以使用agg而不是调用max方法:

from pyspark.sql.functions import max

joined_df.groupBy(temp1.datestamp).agg(max("diff").alias("maxDiff"))

类似于Scala

scala prettyprint-override">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"))
 类似资料:
  • 问题内容: 我正在与n列的PySpark DataFrame。我有一组m列(m <n),我的任务是选择其中包含最大值的列。 例如: 输入:PySpark DataFrame包含: Ouput: 在PySpark中有什么方法可以执行此操作,还是应该将PySpark df转换为Pandas df,然后执行操作? 问题答案: 您可以减少在列列表中使用SQL表达式: Spark 1.5+还提供, 如果要保

  • 我有一个这样的数据帧(受这个问题的启发,设置略有不同): 基于此,我创建了两个新对象。每个都是原始数据帧的子集: 然后,我想连接这两个数据集,并从每个数据集获取< code>f列,如下所示: 然而,我得到了 而不是所需的< code>[Row(f=3,f=4),Row(f=None,f=2),Row(f=2,f=None)]或表示为表格: 有人知道如何解决这个问题吗?我必须把df1和df2存储在某

  • 我想根据字数降序排列这个数据帧。 请告诉我哪里出了问题。

  • 这篇文章给出了一个关于如何更改列名的很好的概述。如何在PySpark中更改dataframe列名? 不过,我需要一些更多的/稍微调整,我没有能力做。有人能帮我删除所有colnames中的空格吗?它需要例如连接命令,系统方法减少了处理30列的工作量。我认为regex和UDF的组合最好。 示例:root--客户机:string(nullable=true)--分支号:string(nullable=t

  • 我在阅读Spark 2.2.0文档时发现了对静态数据帧的奇怪引用https://spark.apache.org/docs/latest/structured-streaming-programming-guide.html#api-使用数据集和数据帧 自Spark 2.0以来,数据帧和数据集可以表示静态的有界数据,也可以表示流式的无界数据。与静态数据集/数据帧类似,您可以使用公共入口点Spark

  • 问题内容: 我有一个PySpark DataFrame。如何从下面的列中截断/删除最后5个字符- 我想创建2列,and列。 预期产量: 我创建的列- 我不知道怎么砍最后五个字符,所以我只有花的名字。我通过调用尝试了类似的方法,但这不起作用。 如何创建仅包含花名的列? 问题答案: 您可以使用expr函数