通过聚合按时间段对 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()
我正在使用 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()