2013-07-20 65 views
5

假設我有一個索引爲monthy timestep的數據框,我知道我可以使用dataframe.groupby(lambda x:x.year)將每月數據分組爲每年並應用其他操作。有什麼方法可以快速分組他們,比如說十年?熊貓數據幀組年度索引十年

感謝您的任何提示。

回答

15

要獲得十年,您可以通過10 10整數除年份,然後乘以例如,如果你從

>>> dates = pd.date_range('1/1/2001', periods=500, freq="M") 
>>> df = pd.DataFrame({"A": 5*np.arange(len(dates))+2}, index=dates) 
>>> df.head() 
      A 
2001-01-31 2 
2001-02-28 7 
2001-03-31 12 
2001-04-30 17 
2001-05-31 22 

您可以通過年級組,像往常一樣(從這裏開始我們有一個DatetimeIndex所以它真的很容易):

>>> df.groupby(df.index.year).sum().head() 
     A 
2001 354 
2002 1074 
2003 1794 
2004 2514 
2005 3234 

,或者你可以做(x//10)*10招:

>>> df.groupby((df.index.year//10)*10).sum() 
      A 
2000 29106 
2010 100740 
2020 172740 
2030 244740 
2040 77424 

如果您沒有可以使用的東西.year,您仍然可以使用lambda x: (x.year//10)*10)

4

使用指數的年屬性:

df.groupby(df.index.year)