我需要下一行中的结果数据帧,以便在groupBy之后的max('diff')列具有别名“maxDiff”。但是,下面的行不会进行任何更改,也不会引发错误。
grpdf = joined_df.groupBy(temp1.datestamp).max('diff').alias("maxDiff")
除了这里已经给出的答案之外,如果您知道聚合列的名称,那么以下也是方便的方法,您不必从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
这是因为您混淆现象是整个DataFrame
对象,而不是Col列
。下面是一个如何仅别名列
的示例:
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
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函数