在pyspark中按小时分组?

时间:2019-10-09 05:27:44

标签: pyspark apache-spark-sql

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

dataframe =

      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

但是我要把Out这样放。

 hour    count
  00       38
  01       68

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

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

1 个答案:

答案 0 :(得分:0)

引用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