通过聚合按时间段对 DataFrame 进行分组

Group DataFrame by period of time with aggregation

我正在使用 Pandas 来构建和处理数据。这是我的数据框:

我按分钟对许多日期时间进行了分组,并进行了聚合,以便按分钟计算 'bitrate' 分数的总和。 这是我拥有此数据框的代码:

def aggregate_data(data):

    def delete_seconds(time):

        return (datetime.datetime.strptime(time, '%Y-%m-%d %H:%M:%S')).replace(second=0)


    data['new_time'] = data['beginning_time'].apply(delete_seconds)
    df = (data[['new_time', 'bitrate']].groupby(['new_time'])).aggregate(np.sum)

    return df

现在我想用 5 分钟作为桶做类似的事情。我想按 5 分钟对我的约会时间进行分组,然后做一个平均.. 像这样的东西:(这当然有效!)

df.groupby([df.index.map(lambda t: t.5minute)]).aggregate(np.mean)

想法?谢谢!

使用resample

df.resample('5Min').sum()

这假定您的索引已正确设置为 DateTimeIndex。

您还可以使用 TimeGrouper,因为重采样是对时间桶的分组操作。

df.groupby(pd.TimeGrouper('5Min')).sum()