Python 按月份和年份分组的日期时间天数差异

Python 按月份和年份分组的日期时间天数差异,python,date,datetime,group-by,itertools,Python,Date,Datetime,Group By,Itertools,我想找出两个日期之间的天数,但按月份和年份分组 指 如果开始年份和结束年份不同,我需要按月份和年份划分结果组。我如何应用代码来获得答案 非常感谢你在另一个答案中分享的想法的基础上,你创建一个日期列表,将它们映射到你想要的组,然后使用groupby from datetime import datetime, timedelta from itertools import groupby start = datetime(2020,12,30) end = datetime(2021,12,1

我想找出两个日期之间的天数,但按月份和年份分组

如果开始年份和结束年份不同,我需要按月份和年份划分结果组。我如何应用代码来获得答案


非常感谢你

在另一个答案中分享的想法的基础上,你创建一个日期列表,
将它们映射到你想要的组,然后使用
groupby

from datetime import datetime, timedelta
from itertools import groupby

start = datetime(2020,12,30) 
end = datetime(2021,12,15) 

dates = (start + timedelta(days=i) for i in range(1, (end - start).days + 1))
year_months = map(lambda x: (x.year, x.month), dates)

for v, g in groupby(year_months):
    print(v, sum(1 for _ in g))


Output:
(2020, 12) 1
(2021, 1) 31
(2021, 2) 28
(2021, 3) 31
(2021, 4) 30
(2021, 5) 31
(2021, 6) 30
(2021, 7) 31
(2021, 8) 31
(2021, 9) 30
(2021, 10) 31
(2021, 11) 30
(2021, 12) 15

获取数据时间的差异,然后创建日期列表(基于开始和差异),然后开始根据您的请求对日期进行分组,您将得到结果。非常感谢您的回答,而且效果非常好。但我想知道我的数据是否有大约一百万行,我需要循环每一行来做你的答案,这是否需要很长时间?
from datetime import datetime, timedelta
from itertools import groupby

start = datetime(2020,12,30) 
end = datetime(2021,12,15) 

dates = (start + timedelta(days=i) for i in range(1, (end - start).days + 1))
year_months = map(lambda x: (x.year, x.month), dates)

for v, g in groupby(year_months):
    print(v, sum(1 for _ in g))


Output:
(2020, 12) 1
(2021, 1) 31
(2021, 2) 28
(2021, 3) 31
(2021, 4) 30
(2021, 5) 31
(2021, 6) 30
(2021, 7) 31
(2021, 8) 31
(2021, 9) 30
(2021, 10) 31
(2021, 11) 30
(2021, 12) 15