首页 >后端开发 >Python教程 >如何有效地将 Pyspark 字符串列转换为日期列?

如何有效地将 Pyspark 字符串列转换为日期列?

DDD
DDD原创
2024-11-30 11:55:11687浏览

How to Efficiently Convert a Pyspark String Column to a Date Column?

将 Pyspark 字符串列转换为日期格式

使用 Pyspark 时,可能需要将表示日期的字符串列转换为 DateType 列。当数据以字符串形式摄取时,通常会遇到这种情况。

为了说明这一点,请考虑以下 DataFrame,其中包含名为 STRING_COLUMN 的字符串列,格式为 MM-dd-yyyy:

df = spark.createDataFrame([
    ("01-01-2023",),
    ("01-02-2023",),
    ("01-03-2023",),
], ["STRING_COLUMN"])
df.show()

要将 STRING_COLUMN 转换为 DateType 列,一种方法是使用 to_date() 函数,如原始版本中所建议的尝试:

df.select(to_date(df.STRING_COLUMN).alias("new_date")).show()

但是,这种方法可能会导致列填充空值。要解决此问题,请考虑使用以下方法之一:

1. to_timestamp 函数 (Spark 2.2 ):

从 Spark 2.2 开始,to_timestamp() 函数提供了一种更高效、更直接的方法将字符串转换为时间戳。它支持使用格式参数指定输入格式:

df.select(to_timestamp(df.STRING_COLUMN, "MM-dd-yyyy").alias("new_date")).show()

2. unix_timestamp 和 from_unixtime 函数(Spark

对于 2.2 之前的 Spark 版本,可以使用 unix_timestamp 和 from_unixtime 函数的组合:

from pyspark.sql.functions import unix_timestamp, from_unixtime

df.select(
    from_unixtime(unix_timestamp(df.STRING_COLUMN, "MM-dd-yyyy")).alias("new_date")
).show()

在这两种情况下,可以使用show()方法来显示转换后的DateType专栏。

以上是如何有效地将 Pyspark 字符串列转换为日期列?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn