python聚合函数aggregate和annotate的小坑

最近在工作项目中发现了一个坑,就是关于aggregate和annotate这两个聚合函数的区别用法。

现在百度上很多搜索的答案对初学者不是很友好,就是直接给出了一句代码,然后也不讲清楚,就用 annotate后的结果 取第一条(如:a[0]) 取值。

这样就导致很多初学者也不会去思考太多,直接copy下来就用,最后导致数据汇总有问题(也不止初学者了,项目组里面有些工作了几年的人都不知道二者区别,也是百度到了直接copy用)

annotate 是分组聚合,返回的结果是一个列表,是根据排序字段把同类分组后再按组聚合,所以会根据不同的排序得到不同的结果,列表里面是一个一个的字典,如果用的是SUM聚合方法,就必须要把列表里面每一个项的值相加才能得到正确的总和。这里如果不存在就直接为None

aggregate 的SUM就是直接聚合所有的相加,比如聚合字段名为age的字段,是一定会存在a[‘age_sum’] 只不过不存在的时候 取值取到的是None。

因为最近工作中好多成员都踩了这个坑,虽然不是什么复杂的问题,但还是记录一下。

你可能感兴趣的:(python,python)