按2个关键字分组,第二个关键字中只有月份



我正在尝试按dict列表中的2个键进行分组,第二个键是datetime.date。我需要按昵称和月份进行分组,并进行几个求和、条件求和等。

在SQL中,它类似于

select 
    rw_worker_nick
    ,date_trunc( 'month', rw_date ) as month
    ,sum(rw_end - rw_start)  as work_time
from 
results_woshi  
where 
rw_script = 93 
group by
  rw_worker_nick
 ,date_trunc( 'month', rw_date ) 
 order by month

键与数据库列具有相同的名称

我认为在python中比在db级别的中更容易实现的条件还有一些

到目前为止,这是我的代码,但我不知道如何按月份分组

grouper = itemgetter("rw_worker_nick", "rw_date")
result = []
from itertools import groupby
from pprint import pprint

for key, grp in groupby(sorted(summary, key = grouper), grouper):
    temp_dict = dict(zip(["rw_worker_nick", "rw_date"], key))
    result.append(temp_dict)

与其依赖itemgetter,不如编写自己的忽略日期的键函数:

grouper = lambda x: (x["rw_worker_nick"], x["rw_date"].replace(day=1))

这会将每个日期更改为其月份的第一天。如果要将同一月份不同年份的项目分组,可以使用x["rw_date"].month而不是replace调用。

最新更新