根据一段时间内其他一组列将列添加到Spark数据框中

时间:2020-03-03 13:41:58

标签: python apache-spark pyspark

所以我基本上是在尝试通过数据框架实现某些目标。基本上,我有一个数据框,该数据框的一列的时间戳以毫秒为单位(MS),并且我想创建一个新列,例如,该列具有基于某个步骤的所属组。例如,如果我定义一个180000的步长(3分钟),则我想要这样的内容:

what I want to achieve

因此,在该示例中,正如我想做的那样,我有一个新列,每次MS超出该范围时,它的增量基本上为180000 MS。

由于我是Spark和Python的新手,所以我的第一种方法是在180000步上执行循环,并在比较MS之后添加组。问题在于这种方法的性能不是很好。

for i in range(0, max_time, 180000):
  df = originalDf.where((originalDf['MS'] > i) & (originalDf['MS'] <= i + 180000))
  df = df.withColumn("MS_GROUP", lit(i))

我已经检查了 groupBy 函数,并尝试使用 Window ,但是没有运气。是否有更好的选择来实现这一目标?非常感谢。

1 个答案:

答案 0 :(得分:1)

让我知道我是否正确理解。简单地:

feed_dict

没有for循环。