Повторите выборку данных на основе временных диапазонов, игнорируя дату - PullRequest
1 голос
/ 26 апреля 2020

Я пытаюсь пересчитать свои данные, чтобы получить суммы. Эта повторная выборка должна основываться исключительно на времени. Я хочу сгруппировать время за 6 часов, поэтому независимо от даты я получу 4 суммы.

Мой df выглядит следующим образом:

                     booking_count
date_time                        
2013-04-04 08:32:25             58
2013-04-04 18:43:11             1
2013-30-04 12:39:15             52
2013-14-05 06:51:33             99
2013-01-06 23:59:17             1
2013-03-06 19:37:25             42
2013-27-06 04:12:01             38

С данными этого примера я ожидаю получить следующие результаты:

00:00:00            38
06:00:00           157
12:00:00            52
18:00:00            43

Чтобы обойти проблему с датой, я попытался сохранить только значения времени:

df['time'] = pd.DatetimeIndex(df['date_time']).time
new_df = df[['time', 'booking_bool']].set_index('time').resample('360min').sum()

К сожалению, это было безрезультатно. Как мне go получить необходимые результаты? resample() даже подходит для этой задачи?

1 Ответ

4 голосов
/ 26 апреля 2020

Я не думаю, что resample() - хороший способ сделать это, потому что вам нужно группировать по часам независимо от дня. Может быть, вы можете попробовать использовать cut, используя пользовательский параметр bins, а затем обычный groupby

bins = np.arange(start=0, stop=24+6, step=6)
group = df.groupby(pd.cut(
            df.index.hour,
            bins, right=False,
            labels=pd.date_range('00:00:00', '18:00:00', freq='6H').time)
        ).sum()

group
#           booking_count
# 00:00:00  38
# 06:00:00  157
# 12:00:00  52
# 18:00:00  44
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...