python 查询周数 week number

python里面查询某一天所处的周数week number时,有比较多的方法,

自己觉得下面这个方法特别棒,在一些方面的处理非常合理。

每年的最后一天必然是12月31日,是12月的最后一天,但这天不一定是这年最后一个周的最后一天,不一定是周日。

如果去年最后一天是周中某一天,那么今年第一天是连续着去年最后一个周的。

matlab里面的week number函数将每年的第一天的week number都设置成1,不管这第一天是不是周一,还是除了周一的某一天。这个在某些问题,比如,获得某个时间序列的每周的最后一天和第一天时候就有难题。但是python很好的化解了这个问题。

python里面,如果今年的第一天不是周一,那么这第一天依然是去年最后一个周的延续,week number都设置成0。当今年的第一个周一出现时候,这天开始的未来7天的week number才是1。

而且在python这个函数里面,周一是某个周的第一天,而不像matlab,除非专门设置,不然周日才是一个周的第一天。

2018年1月1号是周一,所以这天的week number就是1,而2015、2016、2017年的第一天都不是周一,所以这天到当年的周日,其week number都是0。

那么2015-2017年的最后一天,12月31号的周数肯定是52,而2018年的是53。因为一年的总天数是365或者366,就是52个整周加上1天或者2天。

虽然每年的最后一天和第一天的数字不一样,但是week number的序列的长度是一样的,比如2015-2017年间是00-52,而2018年是01-53,长度都是53。matlab那样的设置,week number的序列的长度,每年都是不一样的。

看到00的瞬间,哈哈,觉得爱上python了。LIFE IS SHORT, I USE PYTHON.

strftime函数,W是问week number, A是查周几的,w返回的是周几的数字,大小写W可能容易混淆。

import pandas as pd
datesList = ["2015-01-01", "2015-01-04","2015-01-05","2015-12-31", "2016-01-01", "2016-12-31", "2017-01-01", "2017-12-31", "2018-01-01", "2018-01-07", "2018-01-08", "2018-12-31"]
datesPD = pd.DataFrame(datesList)
datesPD[1] = pd.to_datetime(datesList).strftime("%W") #所处的周是今年第几周
datesPD[2] = pd.to_datetime(datesList).strftime("%A") #查询周几,返回英文
datesPD[3] = pd.to_datetime(datesList).strftime("%w") #查询周几,返回数字
datesPD[4] = ["", "周日不是第一天","周一是第一天", "最后一天是第52周的","", "", "", "", "第一天是周一", "", "", "最后一天是第53周的"]
datesPD.columns = ["dates", "weekNum", "weekDay", "weekDayNum","NOTE"]
         dates weekNum   weekDay weekDayNum        NOTE
0   2015-01-01      00  Thursday          4            
1   2015-01-04      00    Sunday          0     周日不是第一天
2   2015-01-05      01    Monday          1      周一是第一天
3   2015-12-31      52  Thursday          4  最后一天是第52周的
4   2016-01-01      00    Friday          5            
5   2016-12-31      52  Saturday          6            
6   2017-01-01      00    Sunday          0            
7   2017-12-31      52    Sunday          0            
8   2018-01-01      01    Monday          1      第一天是周一
9   2018-01-07      01    Sunday          0            
10  2018-01-08      02    Monday          1            
11  2018-12-31      53    Monday          1  最后一天是第53周的


猜你喜欢

转载自blog.csdn.net/henbile/article/details/79814362