python - 使用 ISO 周频率获取 2020 年的所有开始日期
问题描述
我想创建一个日期列表,每个日期代表 2020 年 ISO 第 N 周的开始日期。
就像是:
weeks2020 = [date(2020, 1, 1), date(2020, 1, 6), date(2020, 1, 13), ...]
我使用 获得了类似的东西timedelta(weeks=1)
,并将其添加到我的START_DATE
( date(2020, 1, 1)
) 中,但我获得的日期不正确。
我知道我可以简单地将我的更改START_DATE
为 be date(2019, 12, 30)
,但我想知道是否有更强大的方法来推导出给定年份中存在的所有一周开始日期。
只是为了清楚起见,这就是我现在正在做的事情:
from datetime import date, timedelta
START_DATE = date(2020, 1, 1)
INTERVAL = timedelta(weeks=1)
STEPS = 54
prev_date = START_DATE
for i in range(1, STEPS):
print(prev_date.strftime('%Y-%m-%d')) # step 1: 2020-01-01, step 2: 2020-01-08, ...
prev_date += INTERVAL
解决方案
如果您可以使用熊猫,也许这样的事情应该是可行的-
import pandas as pd
di = pd.to_datetime(pd.date_range(start='2020-1-1', end='2020-12-31', freq='D'))
# check for either monday or start of the month
weekstart = di[(di.weekday == 0) | ((di.day == 1) & (di.weekday != 6)]
输出
DatetimeIndex(['2020-01-01', '2020-01-06', '2020-01-13', '2020-01-20',
'2020-01-27', '2020-02-01', '2020-02-03', '2020-02-10',
'2020-02-17', '2020-02-24', '2020-03-02', '2020-03-09',
'2020-03-16', '2020-03-23', '2020-03-30', '2020-04-01',
'2020-04-06', '2020-04-13', '2020-04-20', '2020-04-27',
'2020-05-01', '2020-05-04', '2020-05-11', '2020-05-18',
'2020-05-25', '2020-06-01', '2020-06-08', '2020-06-15',
'2020-06-22', '2020-06-29', '2020-07-01', '2020-07-06',
'2020-07-13', '2020-07-20', '2020-07-27', '2020-08-01',
'2020-08-03', '2020-08-10', '2020-08-17', '2020-08-24',
'2020-08-31', '2020-09-01', '2020-09-07', '2020-09-14',
'2020-09-21', '2020-09-28', '2020-10-01', '2020-10-05',
'2020-10-12', '2020-10-19', '2020-10-26', '2020-11-02',
'2020-11-09', '2020-11-16', '2020-11-23', '2020-11-30',
'2020-12-01', '2020-12-07', '2020-12-14', '2020-12-21',
'2020-12-28'],
dtype='datetime64[ns]', freq=None)
推荐阅读
- r - 为什么错误消息仍然存在:setNames() 不适用于 map_dfc
- google-colaboratory - 您可以在 Google Colab 中访问 Google Drive 文件修订历史记录吗?
- ios - SwiftUI - 在具有透明度的视图上剪裁阴影
- html - IE 给我看一张圆边的桌子,而不是边缘
- python - 将列中的某些值转换为新列
- python - Python 根据另一列的值(通过数字索引确定)为新列赋值
- javascript - 获取忽略 ok 字段
- php - 如果值只有 1 个数字,则 PHP 附加随机数
- javascript - 如果使用二分搜索(递归)找到元素,如何获取元素的索引
- python - 使用 python 从 slideshare 下载