如何用Pandas按10分钟时间窗口计算行计数的均值
解决方案
实现思路
基于你已有的1分钟窗口统计结果,按10分钟窗口重新分组,计算每个窗口内的计数总和除以窗口内的记录数,最后取四舍五入后的整数。
代码实现
# 把原分组结果的时间索引向下取整到10分钟,作为新分组键 ten_min_groups = grouped_df.groupby(pd.to_datetime(grouped_df.index).dt.floor('10T')) # 对每个10分钟窗口计算总和、记录数,做除法后取最接近的整数 result = ten_min_groups.apply(lambda g: round(g.sum() / g.count()))
代码说明
pd.to_datetime(grouped_df.index).dt.floor('10T'):将原1分钟粒度的时间索引转换为10分钟窗口的起始时间,作为分组依据。groupby(...):按生成的10分钟窗口键分组。apply(lambda g: round(g.sum() / g.count())):对每个分组,先求和得到窗口内总计数,再除以分组内的记录条数(即该窗口包含的1分钟统计项数量),最后用round()取四舍五入结果。
输出结果
执行代码后会得到你预期的结果:
timestamp 2022-11-09 14:10:00 3 2022-11-09 14:20:00 1 2022-11-09 15:10:00 1 2022-11-09 15:30:00 1 2022-11-09 16:10:00 1 Name: x, dtype: int64
内容的提问来源于stack exchange,提问作者JayJona
相关产品推荐
相关产品推荐

