Повторная выборка панд / групповой день недели и год - PullRequest
0 голосов
/ 14 ноября 2018

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

У меня есть df, который выглядит следующим образом:

                        s1      s2   srd
dt          
2004-02-04 11:21:00 2365.79 2372.37 -7.0
2004-02-05 10:15:00 2365.79 2368.03 -2.0
2004-02-17 06:43:00 2421.05 2425.26 -4.0
2004-02-17 12:43:00 2418.42 2420.53 -2.0
2004-02-17 12:44:00 2420.39 2420.53 -0.0

Индекс dt находится вформат даты и времени.

Мне нужен кадр данных, который выглядит следующим образом (мне нужны только столбец srd и функция, чтобы сгруппировать можно что угодно, например, sum, count и т. д.):

                  srd
dayOfWeek  year         
Mon        2004    10
           2005    11
           2006    8
           2007    120
Tues       2004    105
           2005    105

Я пробовал dayOfWeekDf = df.resample('B'), но я получаю фрейм данных, который выглядит, как будто он разделен по номеру недели.

Я также пытался df.groupby([df.index.weekday, df.index.year])['srd'].transform('sum'), но по какой-то причине он даже не группируется, так как яполучите следующее (17 февраля появляется 3 раза).

                    srd
dt  
2004-02-04 11:21:00 81.0
2004-02-05 10:15:00 203.0
2004-02-17 06:43:00 37.0
2004-02-17 12:43:00 37.0
2004-02-17 12:44:00 37.0

1 Ответ

0 голосов
/ 14 ноября 2018

Если вы хотите, чтобы имена dayOfWeek и year в индексе, вы можете назначить их:

>>> df.assign(year=df.index.year, dayOfWeek = df.index.weekday_name).groupby(['dayOfWeek','year']).srd.sum()
dayOfWeek  year
Thursday   2004   -2.0
Tuesday    2004   -6.0
Wednesday  2004   -7.0
Name: srd, dtype: float64

В противном случае вы можете использовать то, что делали, но пропустить transform:

>>> df.groupby([df.index.weekday_name, df.index.year])['srd'].sum()
dt         dt  
Thursday   2004   -2.0
Tuesday    2004   -6.0
Wednesday  2004   -7.0
Name: srd, dtype: float64
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...