2017-07-18 117 views

回答

13

更新時間:

pd.TimeGrouper()是贊成pd.Grouper()大熊貓v0.21.0 formally deprecated

pd.Grouper()的最佳用法在groupby()之內,當您也在非日期時間列上進行分組時。如果您只需要按頻率分組,請使用resample()

例如,假設您有:

>>> df = pd.DataFrame({'a': np.random.choice(['x', 'y'], size=50), 
         'b': np.random.rand(50)}, 
         index=pd.date_range('2010', periods=50)) 

你可以這樣做:

>>> df.groupby(pd.Grouper(freq='M')).sum() 
        b 
2010-01-31 18.5123 
2010-02-28 7.7670 

但是上面的是一點點不必要的,因爲你只在指數分組。相反,你可以這樣做:

>>> df.resample('M').sum() 
       0  1 
2010-01-31 13.234 17.641 
2010-02-28 9.142 9.061 

相反,這裏的地方Grouper()將是有益的情況下:

>>> df.groupby([pd.Grouper(freq='M'), 'a']).sum() 
        b 
      a   
2010-01-31 x 8.9452 
      y 9.5671 
2010-02-28 x 4.2522 
      y 3.5148 

對於一些細節,看看特德彼得魯的Pandas Cookbook第7章。

+1

我還可以做類似'df.groupby([pd.Grouper(freq ='M'),'brad'])。mean()'? –