'2020/12/01' 20201227 '2020/12/03' 无效的 '2020-12-13'
日期一栏有这几种数据,我需要改成yyyy-MM-dd格式 我们如何在 Pyspark 中实现这一目标。
基本上,当我使用 to_date 时,它给出 NULL。
当我在 panda 中使用 to_datetime() 时,它工作正常,但在 pyspark 中如何可能
在Pyspark中,您可以使用pyspark.sql.functions.to_date函数将字符串列转换为日期列。但需要注意的是,如果输入数据与指定的日期格式不匹配,结果将为空。
考虑到您的日期格式混合的示例,您可能希望通过提供适应不同格式的模式来处理这种情况。这是一个例子:
蟒蛇
from pyspark.sql import SparkSession
from pyspark.sql.functions import to_date
spark = SparkSession.builder.appName("example").getOrCreate()
# Sample data
data = [('2020/12/01',), ('20201227',), ('2020/12/03',), (None,), ('2020-12-13',)]
columns = ["date_col"]
df = spark.createDataFrame(data, columns)
# Define the date formats
date_formats = ['yyyy/MM/dd', 'yyyyMMdd', 'yyyy-MM-dd']
# Use coalesce to handle multiple formats and avoid nulls
df_result = df.withColumn("formatted_date", to_date("date_col", date_formats))
df_result.show()
在此示例中,使用 date_formats 列表将 to_date 应用于多种日期格式。 coalesce 函数用于处理日期与任何指定格式不匹配的情况,从而导致空值。