我有一个格式为 05/26/2021 11:31:56 AM 的字符串,我想在 pyspark 中将其转换为日期格式,例如 05-26-2021。
我尝试了以下内容,但将列类型转换为日期但将值设为空。
df = df.withColumn("columnname", F.to_date(df["columnname"], 'yyyy-MM-dd'))
我尝试过的另一个是
df = df.withColumn("columnname", df["columnname"].cast(DateType()))
我也试过下面的方法
df = df.withColumn(column.lower(), F.to_date(F.col(column.lower())).alias(column).cast("date"))
但在每种方法中,我都能够将列类型转换为日期,但它使值变为空。
感谢任何建议
答案 0 :(得分:1)
# Create data frame like below
df = spark.createDataFrame(
[("Test", "05/26/2021 11:31:56 AM")],
("user_name", "login_date"))
# Import functions
from pyspark.sql import functions as f
# Create data framew with new column new_date with data in desired format
df1 = df.withColumn("new_date", f.from_unixtime(f.unix_timestamp("login_date",'MM/dd/yyyy hh:mm:ss a'),'yyyy-MM-dd').cast('date'))
答案 1 :(得分:0)
@User12345 发布的上述答案有效,下面的方法也有效
df = df.withColumn(column, F.unix_timestamp(column, "MM/dd/YYYY hh:mm:ss aa").cast("double").cast("timestamp"))
df = df.withColumn(column, F.from_utc_timestamp(column, 'Z').cast(DateType()))