为了账号安全,请及时绑定邮箱和手机立即绑定

将日期从整数转换为日期格式

将日期从整数转换为日期格式

aluckdog 2021-05-16 12:13:46
我有一列“ start_date”,它是一个整数37823。这是在我使用xlrd库将xlsx转换为csv时发生的。因此,“ 2003/07/21”被转换为37823。我已经阅读了xlrd文档,并且了解到有几种将其转换为日期的方法。但是,我需要在AWS Glue ETL作业中使用PySpark将其转换为日期格式。有什么建议么?我尝试使用to_date,date_format函数,但没有任何效果。
查看完整描述

3 回答

?
杨__羊羊

TA贡献1943条经验 获得超7个赞

我终于能够解决这个问题。


使用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())

希望能帮助到你!


查看完整回答
反对 回复 2021-05-25
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

我想有更优雅的方法可以做到这一点,但这就是我现在想出的。


from datetime import date

df.hire_date = df.hire_date.apply(date.fromordinal) # this will give you date in dash format

df.hire_date = df.hire_date.apply(lambda x: str(x).replace('-', '/')) # this will simply replace dash with slash

希望这对您有用:)


查看完整回答
反对 回复 2021-05-25
  • 3 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信