【发布时间】:2018-02-21 16:13:20
【问题描述】:
在 pyspark 中有没有办法将时间戳数据类型的数据帧列转换为格式为 'YYYY-MM-DD' 格式的字符串?
【问题讨论】:
标签: apache-spark pyspark
在 pyspark 中有没有办法将时间戳数据类型的数据帧列转换为格式为 'YYYY-MM-DD' 格式的字符串?
【问题讨论】:
标签: apache-spark pyspark
你可以使用date_format函数如下
from pyspark.sql.functions import date_format
df.withColumn("dateColumn", date_format(col("vacationdate"), "yyyy-MM-dd"))
希望这会有所帮助!
【讨论】:
yyyy-MM 也是如此。似乎工作正常
from pyspark.sql.functions import date_format
df.withColumn("DateOnly", date_format('DateTime', "yyyy-MM-dd")).show()
【讨论】:
如果您有一列以schema 为
root
|-- date: timestamp (nullable = true)
然后你可以使用from_unixtime函数在将timestamp转换为bigInt之后将timestamp转换为string > 使用unix_timestamp 函数作为
from pyspark.sql import functions as f
df.withColumn("date", f.from_unixtime(f.unix_timestamp(df.date), "yyyy-MM-dd"))
你应该有
root
|-- date: string (nullable = true)
【讨论】:
#udf to change the datatype to timestamp change_to_timestamp_fmt = udf(lambda x: datetime.strptime(x,'%d-%b-%Y %H:%M:%S'), TimestampType())
另一个尝试的选择是
从 pyspark.sql 导入函数为 F
df = df.withColumn('new_time_column', F.to_timestamp(df['Time_column'], 'yyyy-MM-dd'))
【讨论】: