我正在使用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)
答案 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)