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

如何在Pyspark和group by data中添加具有min和max函数的新列?

金旺
2023-03-14

PySpark数据帧:adobeDF

向数据框添加新列:

from pyspark.sql.window import Window
from pyspark.sql import functions as f
adobeDF_new = adobeDF.withColumn('start_date', f.col('Date')).withColumn('end_date', f.col('Date'))

结果:

我试图找出如何在开始日期中保存最小(日期)值和结束日期中保存最大(日期)值的代码,并按post_evar10和类型对最终数据帧进行分组。

我尝试过的:下面的代码工作,但想看看是否有更好的方法,并将数据限制在60天start_date

from pyspark.sql.window import Window
from pyspark.sql import functions as f
adobe_window = Window.partitionBy('post_evar10','Type').orderBy('Date')
adobeDF_new = adobeDF.withColumn('start_date', min(f.col('Date')).over(adobe_window)).withColumn('end_date', max(f.col('Date')).over(adobe_window))

共有1个答案

孟彦
2023-03-14

下面呢?

adobeDF.groupBy("post_evar10").agg(
    f.min("start_date").alias("min_start"),
    f.max("end_date").alias("max_end")
)
 类似资料:
  • Min 和 Max 函数 在查询时从一组指定字段的值中返回最小或最大值。 语法 Min(expr) Max(expr) 其中 expr 代表一个字符串表达式,它或者标识一个字段,该字段包含要计算的数据;或者是一个表达式,它使用此字段中的数据来执行计算。 expr中的运算对象可能包括一个表字段名,一个常数或一个 函数 (可能是内在的,也可能是用户自定义的,但不是 SQL 合计函数)。 说明 可以使用

  • 问题内容: numpy.amax()将在数组中找到最大值,numpy.amin()对最小值进行相同操作。如果要同时找到max和min,则必须调用两个函数,这需要两次(非常大)数组传递,这似乎很慢。 numpy API中是否存在仅通过一次数据查找即可找到max和min的函数? 问题答案: numpy API中是否存在仅通过一次数据查找即可找到max和min的函数? 否。在撰写本文时,尚无此功能。(是

  • 我用的是PySpark,我有一个Spark数据框架,里面有一堆数字列。我想添加一列,它是所有其他列的总和。 假设我的数据帧具有列“a”、“b”和“c”。我知道我能做到: 问题是,我不想单独键入每列并添加它们,尤其是如果我有很多列。我希望能够自动执行此操作,或者通过指定要添加的列名列表来执行此操作。有其他方法吗?

  • 问题内容: 任何人都可以从官方MySQL文档中澄清这一点 使用索引…查找特定索引列key_col的MIN()或MAX()值。这由预处理器优化,该预处理器检查是否在索引中在key_col之前出现的所有关键部分上使用WHERE key_part_N =常量。在这种情况下,MySQL对每个MIN()或MAX()表达式执行一次键查找,并将其替换为常量。如果所有表达式都用常量替换,查询将立即返回。例如: S

  • 问题内容: 我正在使用PySpark,并且有一个带有一堆数字列的Spark数据框。我想添加一列,它是所有其他列的总和。 假设我的数据框具有列“ a”,“ b”和“ c”。我知道我可以这样做: 问题是我不想单独键入每列并添加它们,尤其是当我有很多列时。我希望能够自动执行此操作,或者希望通过指定要添加的列名列表来执行此操作。还有另一种方法吗? 问题答案: 这并不明显。我看不到spark Datafra

  • MySQL 的常见的聚合函数有 AVG、COUNT、SUM、MIN、MAX,上一小节介绍了 AVG、COUNT、SUM 三种聚合函数,本小节介绍如何使用 MIN、MAX 两种聚合函数,另外再介绍一下如何在 GROUP BY 中使用聚合函数。 1.MIN函数取最小值 以 teacher 表为例,先查所有 teacher 信息: SELECT * FROM teacher; 查询结果如下图: 可以使