2016-05-09 14 views
0

私はdictの私のリストで2つのキーでdatetime.dateであるグループをやろうとしています。私は2番目のキーで唯一の月で2つのキーでグループ化する

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 

キーは、DBの列

と同じ名前を持っているように、それはものになるだろうSQLで

などNICK_NAMEにより、月によってグループに必要と和のカップルを行い、条件付き合計デシベルレベルよりも私はPythonで行うことが容易になると思うだけで、いくつかのより多くの場所を条件

があり、これはこれまでのところ私のコードですが、私は月によってグループ

をする方法がわかりません210
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) 

答えて

1

よりもむしろitemgetterに頼る、日付で日を無視し、独自のキーの機能を記述します。

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

これは、その月の最初にすべての日付をシフトします。別の年に同じ月のアイテムをグループ化する場合は、replaceの代わりにx["rw_date"].monthを使用できます。

+0

cool。素晴らしい回避策。ありがとうございました – Yebach

関連する問題