【发布时间】:2020-10-28 11:31:42
【问题描述】:
我尝试使用以下代码创建从2020-06(上个月从今天开始)到2021-05 的year-month 列表:
from datetime import datetime
from dateutil.relativedelta import relativedelta
need_months = list(range(-1, 12))
print([(datetime.today()+ relativedelta(months=i if i < 0 else i - 1)).strftime('%Y-%m') for i in need_months])
输出:
['2020-06', '2020-06', '2020-07', '2020-08', '2020-09', '2020-10', '2020-11', '2020-12', '2021-01', '2021-02', '2021-03', '2021-04', '2021-05']
但您可能注意到,列表中有两个2020-06。
我怎样才能正确地做到这一点?
预期结果:
['2020-06', '2020-07', '2020-08', '2020-09', '2020-10', '2020-11', '2020-12', '2021-01', '2021-02', '2021-03', '2021-04', '2021-05']
【问题讨论】:
-
为什么不直接使用
need_months = list(range(12))?或更简单(更好)[... for i in range(12)]? -
它有效,如果我想从
2020-05开始? -
你用熊猫标记了这个。
pandas.date_range无需任何循环即可轻松处理此问题
标签: python pandas list datetime relativedelta