2015-02-03 2 views
3

У меня есть следующий pandas таблицаПанды: Агрегированные по месяцам для каждой подгруппы

      TUFNWGTP TELFS t070101 t070102 t070103 t070104 \ 
TUDIARYDATE status                
2003-01-03 emp  8155462.672158  2  0  0  0  0 
2003-01-04 emp  1735322.527819  1  0  0  0  0 
      emp  3830527.482672  2  60  0  0  0 
2003-01-02 unemp 6622022.995205  4  0  0  0  0 
2003-01-09 emp  3068387.344956  1  0  0  0  0 

и я хочу, чтобы агрегировать ежедневные данные по месячным данным, для каждой подгруппы.

То есть, если не было status субиндекса, я бы

df.resample('M', how='sum') 

Как я могу сделать ежемесячную агрегацию для каждой подгруппы?

ответ

5

Я думаю, что вы должны иметь DatetimeIndex (а не мультииндекс):

In [11]: df1 = df.reset_index('status') 

In [12]: df1 
Out[12]: 
      status  TUFNWGTP TELFS t070101 t070102 t070103 t070104 
TUDIARYDATE 
2003-01-03  emp 8155462.672158  2  0  0  0  0 
2003-01-04  emp 1735322.527819  1  0  0  0  0 
2003-01-04  emp 3830527.482672  2  60  0  0  0 
2003-01-02 unemp 6622022.995205  4  0  0  0  0 
2003-01-09  emp 3068387.344956  1  0  0  0  0 

затем сделать GroupBy с ежемесячным TimeGrouper и колонки статуса:

In [13]: df1.groupby([pd.TimeGrouper('M'), 'status']).sum() 
Out[13]: 
          TUFNWGTP TELFS t070101 t070102 t070103 t070104 
TUDIARYDATE status 
2003-01-31 emp  16789700.027605  6  60  0  0  0 
      unemp 6622022.995205  4  0  0  0  0 
Смежные вопросы