Python Pandas: групповой столбец datetime в часовую и минутную скопления

Похоже, это было бы довольно прямолинейно, но после почти целого дня я не нашел решение. Я загрузил свой dataframe с read_csv и легко проанализировал, объединил и проиндексировал дату и столбцы времени в один столбец, но теперь я хочу иметь возможность просто изменять и выполнять вычисления на основе часовых и минутных группировок, аналогичных тем, что вы можете делать в превосходный стержень.

Я знаю, как перенаправить на час или минуту, но он поддерживает часть даты, связанную с каждым часом / минутой, тогда как я хочу объединить набор данных ТОЛЬКО с часами и минутами, подобными группировке в excel pivots и выбрав «час» и «минута», но не выбирая ничего другого.

Любая помощь будет принята с благодарностью.

Вы не можете сделать, где df – ваш DataFrame:

 times = pd.to_datetime(df.timestamp_col) df.groupby([times.hour, times.minute]).value_col.sum() 

Код Уэса не работал для меня. Но функция DatetimeIndex ( docs ) сделала:

 times = pd.DatetimeIndex(data.datetime_col) grouped = df.groupby([times.hour, times.minute]) 

Объект DatetimeIndex представляет собой представление времени в пандах. Первая строка создает массив datetimes. Вторая строка использует этот массив для получения часовых и минутных данных для всех строк, что позволяет группировать данные ( docs ) этими значениями.

Пришел к этому, когда я искал этот тип groupby. Код Wes выше не работал для меня, не уверен, что это связано с изменениями в pandas течением времени.

В pandas 0.16.2 , что я сделал в конце концов, было:

 grp = data.groupby(by=[data.datetime_col.map(lambda x : (x.hour, x.minute))]) grp.count() 

У вас есть (час, минута) кортежи как сгруппированный индекс. Если вам нужен мультииндекс:

 grp = data.groupby(by=[data.datetime_col.map(lambda x : x.hour), data.datetime_col.map(lambda x : x.minute)])