【问题标题】:Group by hour in pyspark?在pyspark中按小时分组?
【发布时间】:2019-10-09 14:22:31
【问题描述】:

我有数据框,其中包含字符串格式的时间列。

数据框=

      time         value
      00:00:00      10
      00:23:00      5
      00:59:00      23 
      01:23:34      34
      01:56:00      34

每次我尝试在时间列上按小时分组时,它都会给出如下输出:-

 hour    count
  0       38
  1       68

但我想像这样输出..

 hour    count
  00       38
  01       68

为此,我编写了如下查询;-

    dataframe.groupBy(hour('time')).agg({'value':'count'})

【问题讨论】:

  • 我认为您正在尝试实现 sum 而不是 count。

标签: pyspark apache-spark-sql


【解决方案1】:

引用substring multiple characters from the last index of a pyspark string column using negative indexing

由于您的时间列在StringType,我们可以使用substring 来获取您想要的小时,并将其分组为StringType

from pyspark.sql.functions import substring, col

df = df.withColumn("hour", substring(F.col("time"), 0, 2))
group_df = df.groupby("hour").sum("value") # or whichever aggregation you want

【讨论】:

    猜你喜欢
    • 2019-11-24
    • 2011-01-07
    • 2021-10-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    相关资源
    最近更新 更多