python group by,sum和count同时不起作用

2024-03-29 09:56:23 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个需要分组的dicts列表,我需要同时进行计数和求和。 计算在我的情况下,此词典为worker显示的次数,并且 基于worker的一个键的SUM字段是什么 但我不能同时做这两件事。在

这是我的密码

grouper = lambda x: (x["rw_worker_nick"], x["rw_date"].replace(day=1))
vacation_group = []
for key, grp in groupby(sorted(vacation, key = grouper), grouper):
    temp_dict = dict(zip(["rw_worker_nick", "rw_date"], key))
    temp_dict['vac_days'] = len(list(grp))
    temp_dict['vac_duration'] = sum(item["rw_duration"] for item in grp)
    vacation_group.append(temp_dict)

总和始终返回0

有什么建议吗??在

谢谢你


Tags: keyinfordategrouptempnickdict
1条回答
网友
1楼 · 发布于 2024-03-29 09:56:23

不能对groupby生成的iterable进行多次迭代。list(grp)使用了iterable中的所有项。在

首先存储列表,然后从中获取长度和总和:

for key, grp in groupby(sorted(vacation, key = grouper), grouper):
    temp_dict = dict(zip(["rw_worker_nick", "rw_date"], key))
    grp = list(grp))
    temp_dict['vac_days'] = len(grp)
    temp_dict['vac_duration'] = sum(item["rw_duration"] for item in grp)
    vacation_group.append(temp_dict)

相关问题 更多 >