python - 将日期从整数转换为日期格式
问题描述
我有一列“start_date”,它是一个整数 37823。当我使用 xlrd 库将 xlsx 转换为 csv 时发生这种情况。因此 '2003/07/21' 被转换为 37823。
我已经浏览了 xlrd 文档,并且我知道有几种方法可以将其转换为日期。但是,我需要在 AWS Glue ETL 作业中使用 PySpark 将其转换为日期格式。有什么建议么?
我尝试使用 to_date、date_format 函数,但没有任何效果。
解决方案
我终于能够解决这个问题。
使用 UDF:
def convert_date(x):
mDt = datetime.datetime(1899, 12, 30)
dlt = mDt + datetime.timedelta(days=x)
return dlt.strftime("%Y-%m-%d")
convert_date_udf = udf(lambda z: convert_date(z), StringType())
df = df.withColumn('hire date', convert_date_udf('hire date').alias('hire date new'))
不使用 UDF:
df = df.withColumn('hire date', F.expr("date_add(to_date('1899-12-30'), cast(`hire date` as int))").cast(StringType())
希望能帮助到你!
推荐阅读
- r - R将列表转换为字符串
- angular - 我如何使用影响下拉但不采用默认值的 OnChange
- r - R ggplot 循环:在 ggplot 直方图的 for 循环中,如何根据最大频率自动设置 y 轴刻度?
- javascript - JavaScript 数学表达式产生不同的结果
- c - Hackerearth 上的可分问题部分接受
- json - Apache NiFi - CSV 中的所有西班牙语字符(ñ、á、í、ó、ú)在 JSON 中更改为问号 (?)
- asp.net - 我的 .NET Core Web 应用程序在服务器中不起作用
- javascript - Vuetify:更改后保持复选框选择
- c# - 将 DbContext 或存储库注入流式验证验证器是否是一种好习惯
- http - 获取 http://hostname/swagger.json 失败