以下是一个按日期分组计数的Python代码示例,如果组之间有间隔,则重新开始计数:
from datetime import datetime, timedelta
# 示例数据,按日期升序排列
dates = [
datetime(2022, 1, 1),
datetime(2022, 1, 2),
datetime(2022, 1, 3),
datetime(2022, 1, 5),
datetime(2022, 1, 6),
datetime(2022, 1, 8)
]
# 初始化计数器和组索引
count = 0
group_index = 0
# 遍历日期列表
for i in range(len(dates)):
# 如果当前日期与前一日期的间隔大于1天,则重新开始计数
if i > 0 and (dates[i] - dates[i-1]).days > 1:
count = 0
group_index += 1
# 每组的计数加1
count += 1
# 打印日期和所属组
print(f"日期: {dates[i].strftime('%Y-%m-%d')}, 组: {group_index}, 计数: {count}")
输出结果:
日期: 2022-01-01, 组: 0, 计数: 1
日期: 2022-01-02, 组: 0, 计数: 2
日期: 2022-01-03, 组: 0, 计数: 3
日期: 2022-01-05, 组: 1, 计数: 1
日期: 2022-01-06, 组: 1, 计数: 2
日期: 2022-01-08, 组: 2, 计数: 1
这段代码使用了datetime库来处理日期,通过计算日期间隔来判断是否需要重新开始计数。每次计数前先检查前一日期与当前日期的间隔,如果大于1天,则将计数器重置为0,并增加组索引。然后,每次循环都将计数器加1,并打印出日期、组索引和计数值。