我有一个时间序列数据,我想从初始日期开始获取周数
date
20180401
20180402
20180902
20190130
20190401
尝试过的东西
代码
df["date"]= pd.to_datetime(df.date,format='%Y%m%d')
df["week_no"]= df.date.dt.week
但是在2019年重置的周数会导致获得2018年的共同周数。我们可以在其中做些什么吗?
我有一个时间序列数据,我想从初始日期开始获取周数
date
20180401
20180402
20180902
20190130
20190401
尝试过的东西
代码
df["date"]= pd.to_datetime(df.date,format='%Y%m%d')
df["week_no"]= df.date.dt.week
但是在2019年重置的周数会导致获得2018年的共同周数。我们可以在其中做些什么吗?
3条答案
按热度按时间zynd9foi1#
您可以使用此函数计算周中两天之间的差值:
nhhxz33t2#
您可以使用指定的日期建立
datetime
对象,然后使用isocalendar
方法撷取周数:然后,您可以计算2018年剩余的总周数,然后将其间每年的总周数相加,最后将当前日期的周数相加。
例如,此代码将打印从2018年4月1日到2020年5月6日的周数:
请注意,由于
isocalendar
的工作方式,12月28日始终是给定年份的最后一周。ISO年由52或53个完整的周组成,其中一周从星期一开始,到星期日结束。ISO年的第一周是包含星期四的一年中的第一个(公历)日历周。这称为第1周,该星期四的ISO年与公历年相同。
有关
isocalendar
的更多信息,请访问:https://docs.python.org/3/library/datetime.htmlpbpqsu0x3#
要获取周数,但作为2位字符串(带前导零),可以运行:
对于稍微扩展的源数据,结果为:
请注意,2018年的最后一天(星期一)的周数== 53,2019年的“初始”天(截至2019年1月6日星期日)的周数== 00。
如果希望此列的格式为 int,请将
.astype(int)
追加到上面的代码中。