Pyspark получает атрибуты времени из datetime с пониманием списка - PullRequest
0 голосов
/ 26 мая 2020

У меня есть фрейм данных pyspark df:

+-------------------+
|      timestamplast|
+-------------------+
|2019-08-01 00:00:00|
|2019-08-01 00:01:09|
|2019-08-01 01:00:20|
|2019-08-03 00:00:27|
+-------------------+

Я хочу добавить столбцы «год», «месяц», «день», «час» в существующий фрейм данных по списку.

В Pandas это будет сделано так:

L = ['year', 'month', 'day', 'hour'] 
date_gen = (getattr(df['timestamplast'].dt, i).rename(i) for i in L) 
df = df.join(pd.concat(date_gen, axis=1)) # concatenate results and join to original dataframe

Как это будет сделано в pyspark?

1 Ответ

1 голос
/ 26 мая 2020

проверьте следующее:

df.selectExpr("*", *[ '{0}(timestamplast) as {0}'.format(c) for c in L]).show()                                    
+-------------------+----+-----+---+----+
|      timestamplast|year|month|day|hour|
+-------------------+----+-----+---+----+
|2019-08-01 00:00:00|2019|    8|  1|   0|
|2019-08-03 00:00:27|2019|    8|  3|   0|
+-------------------+----+-----+---+----+
...