apache-spark - 如何将日期时间列转换为每月的第一天?
问题描述
我有一个 PySpark 数据框,其列的日期时间值格式为 '09/19/2020 09:27:18 AM' 我想以这种格式转换为 2020 年 11 月 1 日的第一天。我已经尝试过"date_col", F.trunc("date_col", "month")
导致null
日期和
df_result = df_result.withColumn('gl_date', F.udf(lambda d: datetime.datetime.strptime(d, '%MM/%dd/%yyyy %HH:%mm:%S a').strftime('%Y/%m/1'), t.StringType())(F.col('date_col')))
第二种方法我尝试了日期格式错误 '%MM/%dd/%yyyy %HH:%mm:%S a' 与 '09/19/2020 09:27:18 AM' 不匹配
解决方案
您可以在调用之前将该列转换为时间戳类型trunc
:
import pyspark.sql.functions as F
df_result2 = df_result.withColumn(
'gl_date',
F.date_format(
F.trunc(
F.to_timestamp("date_col", "MM/dd/yyyy hh:mm:ss a"),
"month"
),
"dd-MMM-yyyy"
)
)
推荐阅读
- cassandra-3.0 - 添加重复记录时,IfNotExists 不返回错误
- autodesk-viewer - 如何复制新的浏览器结构面板?
- java - java 中 2019-05-14T17:21:04+0000 的日期和时间等价物是什么。我怎样才能得到它?
- c++ - Linux 如何处理多个进程同时尝试替换同一个文件的情况?
- angular8 - 使用(--prod 和 prod)命令的区别
- java - Dropwizard + Gradle fatJar 用于带有子项目的项目拉入 gradle-api-5.4.1.jar deps
- loops - 循环直到然后单击元素
- ruby-on-rails - 如何检查参数是否在 json 文件中,如果没有抛出错误响应?
- ios - 如何在 SwiftUI 中使用渐变填充形状
- java - 有没有办法使用 1 以外的数字作为输入来继续程序?它似乎没有认识到我遇到的问题