pyspark只保留日期中的年和月

oo7oh9g9  于 2021-05-24  发布在  Spark
关注(0)|答案(1)|浏览(377)

我有一个带列的Dataframe date_key 日期类型。问题是我想用 yyyy-mm 部分 date_key ,但仍保留日期类型。我试过了 (to_date(df[date_key],'YYYY-MM') 这是行不通的。也试过了 date_format(df[date_key] , 'YYYY-MM') 但是结果是字符串而不是日期类型。有人能帮忙吗?非常感谢。我需要得到的结果是 2020-09 ,之后没有日期或时间戳。

pb3s4cty

pb3s4cty1#

你可以用 date_trunc 要降低时间戳的精度:

df = spark.createDataFrame([['2020-09-30'], ['2020-11-11']], ['date'])\
      .select(to_date(col('date'), 'yyyy-MM-dd').alias('date_key'))
df.show()
+----------+
|  date_key|
+----------+
|2020-09-30|
|2020-11-11|
+----------+

然后截断:

df.select(f.date_trunc('mm', col('date_key'))).show()
+------------------------+
|date_trunc(mm, date_key)|
+------------------------+
|     2020-09-01 00:00:00|
|     2020-11-01 00:00:00|
+------------------------+
``` `date_trunc` 将保持精度达到指定格式, `mm` 在这种情况下是指月份。

相关问题