python - 在 Python 中创建连续年份月份的列表

标签 python pandas list datetime relativedelta

我尝试使用以下命令创建从 2020-06(上个月从今天开始)到 2021-05年-月列表以下代码:

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']

最佳答案

这里是可能的用途period_range将今天转换为月份期间 Timestamp.to_period ,对于上个月减去 1 并添加 12 个周期参数:

now = pd.Timestamp.now().to_period('m')
L = pd.period_range(now-1, freq='M', periods=12).strftime('%Y-%m').tolist()
print (L)
['2020-06', '2020-07', '2020-08', '2020-09', '2020-10', '2020-11', 
 '2020-12', '2021-01', '2021-02', '2021-03', '2021-04', '2021-05']

关于python - 在 Python 中创建连续年份月份的列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62788293/

相关文章:

html - 是否可以在不使用图像的情况下为 HTML 列表选择不同的形状而不是圆形?

regression - 普通最小二乘回归给出错误的预测

Python Socket 编程(TCP 与 UDP)

python - 使用 scipy 计算卷积时出现 ValueError

python - 枚举非确定性列表的所有可能性

python - 如何合并 Pandas 中的两个数据框以替换nan

c++ - 合并两个排序列表出现运行时错误

python - DataFrame 操作函数/方法

python - 分解串联列表或数据框,python

java - 从列表中添加和检索对象