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

3

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

enter image description here

我将许多日期按分钟分组,并做了聚合,以获得每分钟的'bitrate'分数总和。以下是我用来生成这个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

现在我想用5分钟作为时间段来做类似的事情。我想按照5分钟的时间段分组我的日期时间,并计算平均值。类似这样:(当然,这是不起作用的!)

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

有什么想法吗?谢谢!

如果您的索引已经是DatetimeIndex,则可以直接使用“resample”:df.resample('5min').mean()应该可以工作。 - EdChum
1个回答

7

使用重新采样

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

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

你也可以使用TimeGrouper,因为重新采样是对时间桶进行分组操作。

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


你能帮我做这个吗?http://stackoverflow.com/questions/39691671/resampling-timeseries-with-a-given-timedelta - Arij SEDIRI

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接