PySpark 3.5 中的字符串到日期格式

问题描述 投票:0回答:1

日期

'2020/12/01' 20201227 '2020/12/03' 无效的 '2020-12-13'

日期一栏有这几种数据,我需要改成yyyy-MM-dd格式 我们如何在 Pyspark 中实现这一目标。

基本上,当我使用 to_date 时,它给出 NULL。

当我在 panda 中使用 to_datetime() 时,它工作正常,但在 pyspark 中如何可能

pyspark pyspark-pandas
1个回答
0
投票

在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 函数用于处理日期与任何指定格式不匹配的情况,从而导致空值。

© www.soinside.com 2019 - 2024. All rights reserved.