Добавить столбец во фрейм данных Spark на основе группы других столбцов с течением времени - PullRequest
0 голосов
/ 03 марта 2020

Так что я в основном пытаюсь чего-то добиться с помощью своего фрейма данных. В основном у меня есть фрейм данных, в котором есть столбец с метками времени в миллисекундах (MS) , и я хочу создать новый столбец, который, например, имеет группу, к которой он принадлежит, на основе шага. Например, если я определю шаг 180000 (3 минуты), я бы хотел что-то вроде этого:

what I want to achieve

Итак, в этом примере и как я хочу, у меня есть новый столбец, который в основном имеет приращение 180000 мс каждый раз, когда мс выходит за эту границу.

Поскольку я новичок в Spark и Python, мой первый подход должен был сделать al oop на шаге 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 Ответ

1 голос
/ 03 марта 2020

Дайте мне знать, если я правильно понял. Просто:

df = df.withColumn("MS_GROUP", ((originalDf['MS']/180000)+1)*180000)

Нет для l oop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...