如何用Pandas按小时聚合计算download Mb/s列的均值
解决方案:按小时分组计算下载速度均值
嘿,这个需求其实不用反复折腾between_time(),用Pandas的分组功能就能一步搞定,效率还更高,尤其你有6700多行数据的情况!
核心思路
既然你的Timestamp已经是datetime类型的索引了,我们可以直接从索引里提取**小时(0-23)**作为分组依据,然后对download Mb/s列求均值,最后调整成你要的格式就行。
具体代码
import pandas as pd # 假设你的原始DataFrame名为df,且Timestamp已设为datetime类型索引 # 如果还没转成datetime索引,先执行这一步(可选) # df.index = pd.to_datetime(df.index) # 按小时分组,计算下载速度的均值 hourly_mean_df = df.groupby(df.index.hour)['download Mb/s'].mean().reset_index() # 重命名列名到你需要的格式 hourly_mean_df.columns = ['HOUR', 'mean'] # 查看最终结果 print(hourly_mean_df)
代码细节解释
df.index.hour:自动把每个时间戳的小时数(0到23)提取出来,作为分组的标识groupby(...)['download Mb/s'].mean():按小时分组后,仅对下载速度列计算均值,避免多余计算reset_index():把原本作为分组索引的小时数转成普通列,防止结果是Series类型- 最后重命名列名,完全匹配你要的
HOUR和mean格式
示例效果
用你给出的两行测试数据运行后,会得到:
HOUR mean 0 5 13.956026 1 11 12.550000
这个方法比循环遍历每个小时调用between_time()高效得多,Pandas的分组操作是底层优化过的,处理6k行数据毫无压力~
内容的提问来源于stack exchange,提问作者LucaTortuga
相关产品推荐
相关产品推荐

