以下是一个示例代码,演示如何按照每个id连续天数的计数进行分组:
# 输入数据
data = [
{'id': 1, 'date': '2022-01-01'},
{'id': 1, 'date': '2022-01-02'},
{'id': 1, 'date': '2022-01-03'},
{'id': 2, 'date': '2022-01-01'},
{'id': 2, 'date': '2022-01-02'},
{'id': 3, 'date': '2022-01-01'},
{'id': 3, 'date': '2022-01-03'},
]
# 按照id进行分组
groups = {}
for item in data:
id = item['id']
if id not in groups:
groups[id] = []
groups[id].append(item)
# 计算每个id的连续天数的计数
count_groups = {}
for id, group in groups.items():
count = 1
count_group = []
for i in range(1, len(group)):
prev_date = group[i-1]['date']
curr_date = group[i]['date']
prev_day = int(prev_date[-2:])
curr_day = int(curr_date[-2:])
if curr_day - prev_day == 1:
count += 1
else:
count_group.append(count)
count = 1
count_group.append(count)
count_groups[id] = count_group
# 输出结果
for id, counts in count_groups.items():
print(f"ID {id}: {counts}")
运行上述代码的结果将输出每个id的连续天数的计数。例如,对于给定的数据,输出将如下所示:
ID 1: [3]
ID 2: [2]
ID 3: [1, 1]
这表示id为1的数据连续出现了3天,id为2的数据连续出现了2天,id为3的数据分别连续出现了1天和1天。