通过聚合将DataFrame按时间段分组

Dat*_*ted 3 python group-by aggregate aggregation pandas

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

在此处输入图片说明

我按分钟将许多日期时间分组,然后进行汇总,以便按分钟获得“比特率”分数的总和。这是我拥有此数据框的代码:

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
Run Code Online (Sandbox Code Playgroud)

现在,我想用5分钟作为存储桶来执行类似的操作。我想将我的约会时间按5分钟进行分组,然后做一个平均数。..这样的事情:

df.groupby([df.index.map(lambda t: t.5minute)]).aggregate(np.mean)
Run Code Online (Sandbox Code Playgroud)

想法?谢谢 !

Aar*_*les 7

使用resample

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

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

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

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