Come estrarre le ore da datetime in un dataframe pyspark?

0
Vote

Ho un pyspark dataframe come il seguente:

Ho un pyspark pyspark dataframe come il seguente:
df.show(5)

+----------+
|   t_start|
+----------+
|1506125172|
|1506488793|
|1506242331|
|1506307472|
|1505613973|
+----------+
df.show(5) +----------+ | t_start| +----------+ |1506125172| |1506488793| |1506242331| |1506307472| |1505613973| +----------+ df.show (5) + ----------+ | t_start| + ----------+ | 1506125172| | 1506488793| | 1506242331| | 1506307472| | 1505613973| + ----------+

Vorrei ottenere l'ora e il giorno di ogni timestamp unix. Questo è quello che sto facendo:

vorrei ottenere l'ora e il giorno di ogni timestamp unix. Questo è quello che sto facendo:
df=df.withColumn("datetime", F.from_unixtime("t_start","dd/MM/yyyy HH:mm:ss"))
df=df.withColumn("hour", F.date_trunc('hour',F.to_timestamp("datetime","yyyy-MM-dd HH:mm:ss")))
df.show(5)

+----------+-------------------+----+
|   t_start|           datetime|hour|
+----------+-------------------+----+
|1506125172|23/09/2017 00:06:12|null|
|1506488793|27/09/2017 05:06:33|null|
|1506242331|24/09/2017 08:38:51|null|
|1506307472|25/09/2017 02:44:32|null|
|1505613973|17/09/2017 02:06:13|null|
+----------+-------------------+----+
df=df.withColumn("datetime", F.from_unixtime("t_start","dd/MM/yyyy HH:mm:ss")) df=df.withColumn("hour", F.date_trunc('hour',F.to_timestamp("datetime","yyyy-MM-dd HH:mm:ss"))) df.show(5) +----------+-------------------+----+ | t_start| datetime|hour| +----------+-------------------+----+ |1506125172|23/09/2017 00:06:12|null| |1506488793|27/09/2017 05:06:33|null| |1506242331|24/09/2017 08:38:51|null| |1506307472|25/09/2017 02:44:32|null| |1505613973|17/09/2017 02:06:13|null| +----------+-------------------+----+ df=df.withColumn ("datetime", F.from_unixtime ("t_start","dd/MM/yyyy HH: mm: ss")) df=df.withColumn ("hour", F.date_trunc ('hour', F.to_timestamp ("datetime","yyyy-MM-dd HH: mm: ss"))) df.show (5) + ----------+ -------------------+ ----+ | t_start| datetime| ora| + ----------+ -------------------+ ----+ | 1506125172| 23/09/2017 00: 06: 12| null| | 1506488793| 27/09/2017 05: 06: 33| null| | 1506242331| 24/09/2017 08:38:51| null| | 1506307472| 25/09/2017 02: 44: 32| null| | 1505613973| 17/09/2017 02: 06: 13| null| + ----------+ -------------------+ ----+

E ho null nella colonna hour

E ho null null nella colonna hour ora

Source

pyspark python

-Joe Ferndz

-Joe Ferndz

2 Answers
0
Vote

È possibile utilizzare hour() funzione per estrarre l'unità oraria da una colonna timestamp. (Inoltre, cambia il formato della data. È in dd/MM/yyyy)

from pyspark.sql import functions as F
from pyspark.sql.functions import *

df.withColumn("hour", hour(F.to_timestamp("datetime","dd/MM/yyyy HH:mm:ss"))).show()
+----------+-------------------+----+
|   t_start|           datetime|hour|
+----------+-------------------+----+
|1506125172|23/09/2017 00:06:12|   0|
|1506488793|27/09/2017 05:06:33|   5|
|1506242331|24/09/2017 08:38:51|   8|
|1506307472|25/09/2017 02:44:32|   2|
|1505613973|17/09/2017 02:06:13|   2|
+----------+-------------------+----+
Source
0
Vote

È possibile utilizzare hour funzione con from_unixtime semplicemente.

from pyspark.sql.functions import *
df.withColumn('hour', hour(from_unixtime('t_start'))).show()

+----------+----+
|   t_start|hour|
+----------+----+
|1506125172|   0|
|1506488793|   5|
|1506242331|   8|
|1506307472|   2|
|1505613973|   2|
+----------+----+
Source

Potreste essere interessati

© 2021   Risposta.org