如何将 PySpark 字符串列转换为日期格式?

Mary-Kate Olsen
发布: 2024-11-25 15:17:15
原创
748 人浏览过

How to Convert PySpark String Columns to Date Format?

将 PySpark 字符串转换为日期格式

您有一个 PySpark DataFrame,其中的字符串列表示 MM-dd-yyyy 格式的日期。您尝试使用 to_date 函数将此列转换为日期格式会返回空值。本文提供了解决此问题的方法。

更新的建议(Spark 2.2):

对于 Spark 2.2 及更高版本,首选方法是使用 to_date 或to_timestamp 函数,现在支持格式参数。这允许您指定输入格式并将字符串列直接转换为日期或时间戳:

from pyspark.sql.functions import to_timestamp

df = spark.createDataFrame([('1997-02-28 10:30:00',)], ['t'])
df.select(to_timestamp(df.t, 'yyyy-MM-dd HH:mm:ss').alias('dt')).collect()

# Output:
# [Row(dt=datetime.datetime(1997, 2, 28, 10, 30))]
登录后复制

原始答案(Spark

对于早期的 Spark 版本,可以使用以下方法,无需用户自定义函数(UDF):

from pyspark.sql.functions import unix_timestamp, from_unixtime

df = spark.createDataFrame(
    [("11/25/1991",), ("11/24/1991",), ("11/30/1991",)], 
    ['date_str']
)

df2 = df.select(
    'date_str', 
    from_unixtime(unix_timestamp('date_str', 'MM/dd/yyy')).alias('date')
)

print(df2)

# Output:
# DataFrame[date_str: string, date: timestamp]

df2.show(truncate=False)

# Output:
# +----------+-------------------+
# |date_str  |date               |
# +----------+-------------------+
# |11/25/1991|1991-11-25 00:00:00|
# |11/24/1991|1991-11-24 00:00:00|
# |11/30/1991|1991-11-30 00:00:00|
# +----------+-------------------+
登录后复制

在此方法中,unix_timestamp 将字符串列转换为 Unix 时间戳,from_unixtime 将 Unix 时间戳转换为日期列。

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

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板