2016-03-17 24 views
1

我有一個df,我已經按datetime'12M'分組了。我希望它可以按照截至12月31日的12M進行分組。目前這是每年1月31日結束的分組。似乎必須有一個簡單的方法來做到這一點,但我一直無法找到任何記錄我要求的內容。我試過設置TimeGrouper(「12M」),但它不會啓動從今年開始計數,而是使用了第一次約會指數爲起點如何在特定日期開始時間組pandas

dfy = dfy.groupby([pd.TimeGrouper('12M'), 'fec_id', 'trans_typ', 'cmte_id'])['amount'].sum() 
dfy.head() 
#dfy.to_csv('out.csv') 

date  fec_id  trans_typ cmte_id 
2007-01-31 C00002600 24K  C00000729 1000 
            C00002840 1000 
            C00004325 1000 
            C00005157 1000 
            C00009985 1000 
Name: amount, dtype: int64 

回答

1

您可以使用Grouperfreq=A

Offset aliases

g = df.groupby([pd.Grouper(level='date', freq='A'), 'cand_id', 'trans_typ'])['amount'].sum() 
print g 

date  cand_id trans_typ 
2001-12-31 H2HI02110 24K    2500 
2007-12-31 H8IL21021 24K    -1000 
      S6TN00216 24K    2000 
2008-12-31 H2PA11098 24K    1000 
      H4KS03105 24K    49664 
      H6KS01146 24K    2000 
      H6KS03183 24K    1000 
      H8KS02090 24K    1000 
      S6TN00216 24K    2500 
2009-12-31 H0MO00019 24K    500 
      H8MO09153 24K    500 
      S0MO00183 24K    1000 
      S0NY00410 24K     0 
      S2KY00012 24K    2000 
      S6OH00163 24K    -4000 
      S6TN00216 24K    -2000 
      S6WY00068 24K    -3500 
+0

謝謝;工作! :) –

1

使用closed='left'大吵pd.TimeGrouper

pd.TimeGrouper('12M', closed='left') 
相關問題