以下是一个示例代码,用于按组别统计连续周数:
from datetime import datetime
def group_continuous_weeks(dates):
# 将日期列表按升序排序
sorted_dates = sorted(dates)
groups = []
current_group = [sorted_dates[0]] # 初始化第一个组别
for i in range(1, len(sorted_dates)):
# 计算两个日期之间的周数差距
diff_weeks = (sorted_dates[i] - sorted_dates[i-1]).days // 7
if diff_weeks > 1:
# 如果周数差距大于1,则当前组别结束,添加到结果列表中
groups.append(current_group)
current_group = [sorted_dates[i]]
else:
# 如果周数差距小于等于1,则将当前日期添加到当前组别中
current_group.append(sorted_dates[i])
# 添加最后一个组别到结果列表中
groups.append(current_group)
return groups
# 示例使用
dates = [
datetime(2022, 1, 1),
datetime(2022, 1, 8),
datetime(2022, 1, 15),
datetime(2022, 1, 22),
datetime(2022, 2, 5),
datetime(2022, 2, 12),
datetime(2022, 2, 19)
]
result = group_continuous_weeks(dates)
for group in result:
print(group)
输出结果:
[datetime.datetime(2022, 1, 1, 0, 0), datetime.datetime(2022, 1, 8, 0, 0), datetime.datetime(2022, 1, 15, 0, 0), datetime.datetime(2022, 1, 22, 0, 0)]
[datetime.datetime(2022, 2, 5, 0, 0), datetime.datetime(2022, 2, 12, 0, 0), datetime.datetime(2022, 2, 19, 0, 0)]
该示例代码接受一个日期列表作为输入,按照日期的升序排序。然后,它循环遍历排序后的日期列表,计算每两个日期之间的周数差距。如果周数差距大于1,则当前组别结束,将当前组别添加到结果列表中,并创建一个新的组别。如果周数差距小于等于1,则将当前日期添加到当前组别中。最后,将最后一个组别添加到结果列表中,并返回结果列表。
上一篇:按组别输出的结果不符预期。
下一篇:按组别统计的SQL总计数