python - 如何创建具有周数范围的系列?

标签 python datetime series

我希望创建一个从现在开始的过去 6 个工作周的列表。

我目前有效的方法是:

import datetime
cww = datetime.datetime.now().isocalendar()[1]
cy = datetime.datetime.now().isocalendar()[0]
l6ww = [str(cy)[2:]+'WW'+str(w) for w in range(cww-5,cww+1)]

print l6ww

['18WW35', '18WW36', '18WW37', '18WW38', '18WW39', '18WW40']

这将持续到明年第一次世界大战。我可以想到几种强力方法来解决这个问题,但想要一些更优雅的方法。

最佳答案

您可以使用datetime.timedelta():

import datetime

now = datetime.datetime.now().isocalendar()

l6ww = [(datetime.datetime.now() - datetime.timedelta(weeks=x)).isocalendar() for x in range(6)]

final = [str(i[0])[2:] + 'WW' + str(i[1]) for i in l6ww][::-1]

产量:

['18WW35', '18WW36', '18WW37', '18WW38', '18WW39', '18WW40']

即使您进入新的一年,无论是向前 x 周还是过去 x 周,这都将起作用。您也可以稍微修改此代码以继续前进:

l6ww = [(datetime.datetime.now() + datetime.timedelta(weeks=x)).isocalendar() for x in range(15)]

final = [str(i[0])[2:] + 'WW' + str(i[1]) for i in l6ww]

产量:

['18WW40', '18WW41', '18WW42', '18WW43', '18WW44', '18WW45', '18WW46', '18WW47', '18WW48', '18WW49', '18WW50', '18WW51', '18WW52', '19WW1', '19WW2']

关于python - 如何创建具有周数范围的系列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52632912/

相关文章:

python - 是否有一些方法可以知道 XGBoost 树适合哪个数据子样本?

python - Scrapy 未通过元属性传递正确的项目

php - 通过 PHP 插入 MYSQL 时的 UNIX 时间戳问题

c# - 减去 2 个日期时间字段以获得剩余天数

python - 当数据框的列包含多个值时选择数据框的行

python - Pandas 对象的子类与其他对象的子类工作方式不同?

python - CherryPy 不尊重所需的日志记录格式

python - 我想异常处理 'list index out of range.'

android - 将事件添加到日历显示错误的结束日期

c# - 具有不同 XAxis (DateTime) 区域的 Infragistics 多个系列