python group by sum和count同时不工作

时间:2017-11-29 09:56:38

标签: python count sum grouping

我有一个需要分组的dicts列表,我需要同时进行计数和求和。 算一下这个字典在我的情况下为工人出现的次数 SUM表示基于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

任何建议??

谢谢

1 个答案:

答案 0 :(得分:1)

您无法迭代groupby生成多次的迭代。 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)