如何对含浮点型连续时间索引的Pandas DataFrame重采样统计每秒事件数?
处理浮点型时间索引的整秒事件统计
当你的DataFrame索引是代表秒数的浮点数时,确实没法直接用resample(它只支持datetime类索引),不过我们可以用分组+索引取整的方式轻松实现需求,核心思路就是把每个浮点索引映射到它所在的整秒区间,再按区间分组求和。
具体实现步骤
- 第一步:给每个浮点索引生成对应的整秒分组键——用
np.floor()对索引做向下取整,比如0.2秒会被归到0秒区间,1.9秒归到1秒区间,完美匹配整秒的左闭右开区间逻辑。 - 第二步:用这个分组键对DataFrame分组,然后对
value列求和,就能得到每个整秒内的事件总数。
示例代码
先基于你给出的示例数据,加上统计逻辑:
import pandas as pd import numpy as np # 生成示例数据:0到5秒,步长0.2秒,value是0或1 df = pd.DataFrame(data={'value': np.random.randint(0,2,25)}, index = np.arange(0,5,0.2)) # 简洁写法:直接按索引的向下取整结果分组求和 event_count_per_second = df.groupby(np.floor(df.index))['value'].sum() # 输出结果 print(event_count_per_second)
如果你想更清晰地看到分组逻辑,也可以先新增一列存储整秒区间标识,再分组:
# 显式生成分组列的写法 df['second_interval'] = np.floor(df.index) event_count_per_second = df.groupby('second_interval')['value'].sum()
结果说明
输出的event_count_per_second是一个Series,索引是整秒数(比如0、1、2...),对应的值就是该整秒区间内事件(value=1)的发生次数,完全匹配你的统计需求。
内容的提问来源于stack exchange,提问作者fccoelho
相关产品推荐
相关产品推荐

