Python:日期转换为年 - 周数,在年份转换时发出

时间:2017-05-09 03:04:16

标签: python date pandas time

我正在尝试将带有日期和时间戳的数据框列转换为年 - 周数字格式,即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。由于数据涵盖多年,周数和相应日期每年都在变化,我不能简单地减去几天。

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

1 个答案:

答案 0 :(得分:0)

df.date.dt.year替换为:

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

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