如何在特定日期熊猫上开始时间组

时间:2016-03-17 11:39:10

标签: python pandas

我有一个df,我按日期时间分组' 12M'。我希望按照12月31日结束的12M进行分组。目前它是在1月31日结束的年度分组。似乎必须有一个简单的方法来做到这一点,但我一直无法找到任何记录我要求的东西。我尝试过设置TimeGrouper(' 12M')但它从一年开始就不会开始计算,而是使用第一个日期索引作为起点

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

2 个答案:

答案 0 :(得分:1)

closed='left'参数与pd.TimeGrouper一起使用。

pd.TimeGrouper('12M', closed='left')

答案 1 :(得分:1)

您可以Grouper使用freq=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