У меня есть датафрейм, импортированный из CSV с двумя столбцами (среди прочих): дата и время.Date - это строка даты в формате YYYY-MM-DD
, а Time - строка в формате HH:MM
.При импорте этого в pyspark с inferSchema
«Дата» автоматически выводится на дату и время, что разрешает их все до полуночи (например, 2018-05-04 00:00:00.000
).
Мне нужно отфильтровать данные только к тем данным, где времямежду двумя часами (9 утра и 5 вечера).Самая основная идея, которую я имел, состояла в том, чтобы фильтровать только по строке, например,
return dataframe.filter(
dataframe.Time.like("19%")
)
В качестве альтернативы я подумал о агрегировании даты и времени в один столбец «Метка времени», например, как показано ниже.(вероятно, очень плохо, я все еще изучаю pyspark):
data = data.withColumn(
"Timestamp",
to_utc_timestamp(concat(date_format(col("Date"), "YYYY-MM-dd "), col("Time")), "GMT")
# )
В принципе, как я могу это сделать, поскольку я не в восторге ни от одного из этих методов?Если второй метод выглядит разумным, как можно применить фильтр?Недостатком второго метода является то, что он оставляет фрейм данных с новым столбцом, что является потенциально непредвиденным побочным эффектом (я пытаюсь построить этот код достаточно модульно).
Заранее спасибо.Извиняюсь за неопределенность вопроса, я все еще изучаю pyspark и пытаюсь узнать о различных возможных способах достижения цели.