Pyspark - Как разделить столбец со значениями структуры типа Datetime? - PullRequest
0 голосов
/ 07 июня 2018

У меня есть следующий код, который создает окна и агрегирует значения в окнах.

df.groupBy(window("time", "30 minutes"))\
  .agg(func.countDistinct("customer_numbers")

Столбец окна (столбец, содержащий периоды времени) теперь представляет собой структуру с двумя датами и временем.

[datetime1, datetime2]. 

Мой фрейм данных выглядит так:

window                                       customer_numbers
[2018-02-04:10:00:00, 2018-02-04:10:30:00]          10
[2018-02-04:10:30:00, 2018-02-04:11:00:00]          15

Я хочу, чтобы он выглядел следующим образом

start                             End               customer_numbers
2018-02-04:10:00:00        2018-02-04:10:30:00        10
2018-02-04:10:30:00        2018-02-04:11:00:00        15

Я хочу разбить это на два столбца иизбавиться от исходного столбца окна, но я не могу найти способ сделать это.Я пытался использовать UDF, хотя я думаю, что в Scala вы можете просто сделать что-то вроде того, чтобы получить первый элемент, который я не знаю, как это сделать в pyspark.Я попытался добавить UDF, но вместо этого дал мне первое значение, которое он дал мне календарь.

.withColumn("key", $"window"._1)

Кто-нибудь знает, как мне этого добиться?

1 Ответ

0 голосов
/ 07 июня 2018

Вы можете просто использовать функцию select как

.select(func.col('window')[0].alias('start'), func.col('window')[1].alias('end'), func.col('customer_numbers')).drop('window')
...