如何获取列中值为1的半小时之前的每一行的计数?

时间:2017-11-08 02:58:40

标签: scala dataframe databricks

我有一个数据框如下:

id        time                  type     day
___       _____                 _____    ____
 1   2016-10-12 01:45:01          1       3
 1   2016-10-12 01:48:01          0       3
 1   2016-10-12 01:50:01          1       3
 1   2016-10-12 01:52:01          1       3
 2   2016-10-12 01:53:01          1       3
 2   2016-10-12 02:10:01          1       3
 3   2016-10-12 01:45:01          1       3
 3   2016-10-12 01:48:01          1       3

从这个数据框中我想计算每行半小时前该id中类型1的出现次数。 例如,如果我们采取第一行

1   2016-10-12 01:45:01          1       3

由此我想计算该id中从2016-10-12 01:45:012016-10-12 01:15:01的类型1出现,因为它是第一条记录,所以最终为0。

       id        time                  type     day     count_of_type1
      ___       _____                 _____    ____    ______________   
        1   2016-10-12 01:45:01         1       3              0

如果我们采取第三行

 1   2016-10-12 01:50:01          1       3

由此我想计算该id中最终为2的2016-10-12 01:50:012016-10-12 01:20:01的类型1出现。

   id        time                  type     day     count_of_type1
  ___       _____                 _____    ____    ______________   
  1   2016-10-12 01:50:01           1       3              2

我读了下面的数据框,也知道如何计数,但我不确定如何为每一行单独追加列:

   val df  = sqlContext.read.format("com.databricks.spark.csv").option("header", "true").load("hdfs:///user/rkr/datafile.csv")

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

您可以使用自联接来获取具有基于时间戳的条件的行。

<izpack:installation version="5.0"
xmlns:izpack="http://izpack.org/schema/installation"
                 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                 xsi:schemaLocation="http://izpack.org/schema/installation http://izpack.org/schema/5.0/izpack-installation-5.0.xsd">

<izpack:installation>