在 Python 中获取从周日开始的周数时出现问题?

Sta*_*tan 5 python datetime pandas

我正在使用 Python 3.6,并且在获取从周日开始的周数时遇到问题。

如何在 Python 中找到从周日开始的周数?

t1 = datetime.datetime.now()

t1.strftime("%U")
Run Code Online (Sandbox Code Playgroud)

例如, on09/16/2018 Sunday它应该给出WW38而不是WW37它现在给出的。

我看到 、"%U""%V""%W"给予相同的。

任何帮助将不胜感激。

数据框的一小部分如下:

   time                   value
2018/09/15 1:08:19 PM   11.87
2018/09/16 6:23:17 PM   10.794
2018/09/16 6:37:48 PM   10.313
2018/09/16 6:54:14 PM   10.578
2018/09/16 6:58:24 PM   11.057
2018/09/19 9:08:24 PM   13.09
Run Code Online (Sandbox Code Playgroud)

每次我创建 WW 专栏时。问题是我希望 WW 在周日而不是周一开始。

我的代码:

ww_l =[]
for date in df['time']:  
  date_v = datetime.strptime(tv, "%Y-%m-%d %H:%M:%S")  
  curr_ww = datetime.date(date_v).strftime("%W")   
  ww_l.append(curr_ww)
df['WW'] = pd.DataFrame(ww_l)
Run Code Online (Sandbox Code Playgroud)

Ben*_*n.T 4

解决方法可能是添加一天df['time'],然后获取一周。像这样,如果您在星期日,则在星期一添加一天,并且获得星期一的那一周将是您要查找的那一周,而对于其他日子,它不会改变任何内容,例如:

df['WW'] = (df['time'] + pd.Timedelta(days=1)).dt.week
Run Code Online (Sandbox Code Playgroud)

编辑:感谢@pygo,您可以使用pd.Dateoffset添加一天而不是pd.Timedelta诸如:

df['WW'] = (df['time'] + pd.DateOffset(days=1)).dt.week
Run Code Online (Sandbox Code Playgroud)

你会得到预期的结果:

print (df)
                 time   value  WW
0 2018-09-15 13:08:19  11.870  37
1 2018-09-16 18:23:17  10.794  38
2 2018-09-16 18:37:48  10.313  38
3 2018-09-16 18:54:14  10.578  38
4 2018-09-16 18:58:24  11.057  38
5 2018-09-19 21:08:24  13.090  38
Run Code Online (Sandbox Code Playgroud)