以 Python YYYYMM 格式创建年月列

问题描述 投票:0回答:3

我有多年是使用以下语句创建的

 range(datetime.now().year - 1, datetime.now().year + 1)

给出以下输出

2023
2024

我有一个由

range(1, 13)

创建的月份专栏
1
2
.
.
.
12

我想创建以下列:

202301
202302
202303
202304
.
.
.
202411
202412

我尝试了以下方法:

range(datetime.now().year - 1, datetime.now().year + 1) * 100 + range(1,13)

但是由于两个范围的维度不相等,因此会抛出错误:

unsupported operand type(s) for *: 'range' and 'int'

有谁知道如何用 Python 来实现这个?在我的例子中,我只有两年,实际上我有很多年。

python
3个回答
0
投票

您可以使用

date_range

my_range = pd.date_range(
  "2023-01-01",  # start
  "2024-12-01",  # end
  freq="MS"      # frequency = monthly
).strftime("%Y%m")  # set the format here

0
投票

您可以尝试为年份和月份创建两个范围。以所需的格式组合每年和每月,并将月份格式化为始终具有两位数。这是一个例子:

### Define the range of years
start_year = datetime.now().year - 1
end_year = datetime.now().year + 1
years = range(start_year, end_year)

### Define the range of months (1 to 12)
months = range(1, 13)

### Generate output
output = [f"{year}{month:02d}" for year in years for month in months]

### Display results
for item in output:
    print(item)

0
投票
from datetime import datetime

years = range(datetime.now().year - 4, datetime.now().year + 1)
months = range(1, 13)

year_month_combinations = [year * 100 + month for year in years for month in months]

print(year_month_combinations)

输出将是

[202001, 202002, 202003, 202004, 202005, ......, 202411, 202412]
© www.soinside.com 2019 - 2024. All rights reserved.