Pandas如何基于其他列的45秒时间窗口对指定列求和并跳过空区间
实现方法
核心思路是通过整数除法计算每个时间戳所属的45秒窗口的起始值,再按窗口分组对weight求和即可,空窗口会因为没有匹配数据自动被排除,不需要额外处理。
完整代码示例
import pandas as pd # 构造示例数据,实际使用时替换为你自己的DataFrame读取逻辑即可 data = { "weight": [1,1,1,1,1,1,1], "timeblock": [1620975600, 1620975640, 1620975700, 1620975715, 1620975740, 1620975790, 1620975800] } df = pd.DataFrame(data) # 计算每个时间点对应的45秒窗口起始时间 df["interval"] = (df["timeblock"] // 45) * 45 # 按窗口分组求和,调整列顺序得到最终结果 result = df.groupby("interval", as_index=False)["weight"].sum()[["weight", "interval"]] print(result)
输出结果
weight interval 0 2 1620975600 1 2 1620975690 2 1 1620975735 3 2 1620975780
注意事项
如果你的timeblock列是datetime类型而非秒级整数时间戳,需要先转成秒级时间戳再做计算:
# datetime类型转秒级时间戳 df["timeblock"] = df["timeblock"].astype("int64") // 10**9
内容的提问来源于stack exchange,提问作者hunterm
相关产品推荐
相关产品推荐

