Pandas Group по индексу Час и ведение наблюдения за каждым часом - PullRequest
0 голосов
/ 17 июня 2019

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

data= data.groupby(data.index.hour).max()

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

1 Ответ

2 голосов
/ 17 июня 2019

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

Если вы хотите объединить несколько наблюдений, которые происходят каждый час, и просматривать их с течением времени, вы захотите использовать класс pandas.Grouper.

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

Примечание: вам нужно заменить "data_col""с именем столбца данных в вашем DF, который содержит наблюдения

Группировка по номеру часа

data = data.groupby(data.index.hour)["data_col"].apply(list)

Группировка по часовым временным последовательностям

time_grouper = pd.Grouper(freq="1h")

data = data.groupby(time_grouper)["data_col"].apply(list)
...