Raj*_*Raj 4 python pyspark aws-glue
我有一列“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'))
Run Code Online (Sandbox Code Playgroud)
不使用 UDF:
df = df.withColumn('hire date', F.expr("date_add(to_date('1899-12-30'), cast(`hire date` as int))").cast(StringType())
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你!
| 归档时间: |
|
| 查看次数: |
9991 次 |
| 最近记录: |