根据时间范围重新采样数据帧,忽略日期

Tim*_*ack 2 python dataframe pandas

我正在尝试重新采样我的数据以获得总和。这种重新采样需要完全基于时间。我想在 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
Run Code Online (Sandbox Code Playgroud)

使用此示例数据,我希望得到以下结果:

00:00:00            38
06:00:00           157
12:00:00            52
18:00:00            43
Run Code Online (Sandbox Code Playgroud)

为了解决日期问题,我尝试只保留时间值:

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

不幸的是,这无济于事。我如何获得所需的结果?是resample()即使适合这项任务?

jca*_*liz 5

我认为这不是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
Run Code Online (Sandbox Code Playgroud)