【问题标题】:how to change weekly column to "to_date" in pyspark dataframe如何在pyspark数据框中将每周列更改为“to_date”
【发布时间】:2021-04-25 11:31:24
【问题描述】:

我有一个庞大的数据集,为了说明,我简化了下面给出的数据集:

date    product price   amount
201901  A   10  20
201902  A   10  20
201903  A   20  30
201904  C   40  50

在此数据集中,日期列显示 year-weekNumber,我正在尝试将字符串类型转换为 pyspark 数据框中的日期类型。有没有什么有效的方法可以将日期列设置为“日期”类型?

【问题讨论】:

  • 这行得通吗? df['parsed_date'] = df['date'].apply(lambda s: datetime.strptime(s, '%Y%U')) 顺便说一句,strftime.org 是一个令人难忘的网页,可以通过 strftime 指令查看。
  • 实际上,这里提到的周数更复杂:stackoverflow.com/questions/17087314/get-date-from-week-number。我认为正确解析它需要确切知道输入数据中的周数代表什么。无论如何,一周数是不够的,我们还需要一周中的一天。

标签: dataframe date apache-spark pyspark week-number


【解决方案1】:

您可以将to_date 与合适的日期时间模式字符串一起使用:

import pyspark.sql.functions as F

spark.sql("set spark.sql.legacy.timeParserPolicy=LEGACY")
df2 = df.withColumn('date', F.to_date('date', 'yyyyww'))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-03-08
    • 1970-01-01
    • 2015-11-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-04-07
    • 1970-01-01
    相关资源
    最近更新 更多