在使用Python从星期日开始的星期中获取星期数时遇到问题吗?

时间:2018-11-06 15:32:52

标签: python pandas datetime

我正在使用Python 3.6,从星期日开始获取星期数时遇到问题。

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

t1 = datetime.datetime.now()

t1.strftime("%U")

例如,在09/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

对于每次创建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)

2 个答案:

答案 0 :(得分:2)

一种解决方法是在df['time']添加一天,然后获取一周。像这样,如果您在星期日,则在星期一添加一天,而获取星期一的星期将是您要查找的日期,而在其他日子中,它不变,例如:

df['WW'] = (df['time'] + pd.Timedelta(days=1)).dt.week

编辑:感谢@pygo,您可以使用pd.Dateoffset代替pd.Timedelta添加一天,例如:

df['WW'] = (df['time'] + pd.DateOffset(days=1)).dt.week

您将得到预期的结果:

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

答案 1 :(得分:0)

您可以将一周的第一天(您希望将其设置为星期日)如下:

    import calendar
    calendar.setfirstweekday(calendar.SUNDAY)

可以找到文档here