【问题标题】:Python: Date conversion to year-weeknumber, issue at switch of yearPython:日期转换为年-周数,在年切换时发出
【发布时间】:2017-10-07 04:57:44
【问题描述】:

我正在尝试将带有日期和时间戳的数据框列转换为年-周数格式,即 01-05-2017 03:44 = 2017-1。这很容易,但是,我被困在新年的日期,但他们的周数仍然是前一年的最后一周。同样的事情发生here

我做了以下事情:

df['WEEK_NUMBER'] = df.date.dt.year.astype(str).str.cat(df.date.dt.week.astype(str), sep='-')

其中 df['date'] 是一个非常大的列,其中包含日期和时间,范围跨越多年。

给出问题的日期例如:

Timestamp('2017-01-01 02:11:27')

我的代码的输出将是 2017-52,而应该是 2016-52。由于数据涵盖多年,并且周数及其对应的日期每年都在变化,我不能简单地减去几天。

有人知道如何解决这个问题吗?谢谢!

【问题讨论】:

  • 是否应该将 Timestamp('2017-01-01 02:11:27') 转换为 2017 年第 1 周?

标签: python date pandas time


【解决方案1】:

用这个替换df.date.dt.year

(df.date.dt.year- ((df.date.dt.week>50) & (df.date.dt.month==1)))

基本上,这意味着如果周数大于 50 并且月份是一月,则您将减去 1 到年份值。

【讨论】:

    猜你喜欢
    • 2019-08-12
    • 2018-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多