2016-02-11 90 views
1

我想按固定時間段對我的時間系列進行分組,但功能與定製時間段的功能to_period()完全相同。按自定義固定時間段組的時間系列

# Some test data 
df = pd.DataFrame({'categ': np.random.choice([1,2,3], 12)}, index=pd.date_range(start=pd.to_datetime('2015-01-01'),periods=12, freq='M')) 

print(df.groupby(df.index.to_period('M')).sum().head(2)) 

     categ 
2015-01  1 
2015-02  3 

但我想按自定義時間段,例如2個月(雙月)分組時間系列。不幸的是to_period('2M')不起作用,如果我使用TimeGrouper這些時間段不是固定的,它們是相對於開始日期。

print(df.groupby(pd.TimeGrouper('2M')).sum().head(2)) 

      categ 
2015-01-31  3 
2015-03-31  4 

預期的行爲是有相同的固定期限(如四分之一,但兩個月)的任何數據(一月至二月,三月,四月,等)。 有誰知道解決方案?提前致謝。

  categ 
2015-02  3 
2015-04  4 

回答

0

這是我用於我的特定需求的解決方案。如果有人有更好的答案,請告訴我。

freq = '2M' 
df[freq] = df.index.to_period(freq) 
# Adding a month each even month 
df[freq] = df[freq] + df[freq].dt.month % 2 * MonthEnd() 
print(df.groupby(freq).sum().head(2)) 

     categ 
2M    
2015-02  5 
2015-04  2