You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

基于累积求和计算15分钟间隔的实时生产数据

15分钟区间实时生产增量计算方案

问题需求

现有包含机器编码M、时间戳DateTime、累积求和Cumulative的实时生产数据,已通过DateTime向下取整生成15分钟时间区间TimeBins,需要:

  • 提取每台机器在每个TimeBins中的最新Cumulative值
  • 计算相邻15分钟区间的累积值差值,生成含Diff列的新DataFrame,得到每台机器的15分钟实时生产数据

原始数据

import pandas as pd

df = pd.DataFrame({
    'M': ['18','18','18','19','19','19','18','18','18','19','19','19','19'],
    'Cumulative': ['8','10','11','5','8','9','13','16','17','14','19','20','22'],
    'DateTime': [
        '2022-08-01 07:14:28','2022-08-01 07:25:58','2022-08-01 07:29:19',
        '2022-08-01 07:13:17','2022-08-01 07:28:58','2022-08-01 07:29:01',
        '2022-08-01 07:34:54','2022-08-01 07:36:02','2022-08-01 07:38:17',
        '2022-08-01 07:33:46','2022-08-01 07:37:09','2022-08-01 07:38:17','2022-08-01 07:41:38'
    ]
})

已完成预处理

# 转换时间格式
df['DateTime'] = pd.to_datetime(df['DateTime'])
# 生成15分钟时间桶(向下取整)
df['TimeBins'] = df['DateTime'].dt.floor(freq='15T')
# 转换累积值为整数类型
df['Cumulative'] = df['Cumulative'].astype('int32')

期望输出

M           DateTime           TimeBins  Cumulative  Diff
0  18 2022-08-01 07:14:28 2022-08-01 07:00:00           8   NaN
1  18 2022-08-01 07:29:19 2022-08-01 07:15:00          11   3.0
2  18 2022-08-01 07:38:17 2022-08-01 07:30:00          17   6.0
3  19 2022-08-01 07:13:17 2022-08-01 07:00:00           5   NaN
4  19 2022-08-01 07:29:01 2022-08-01 07:15:00           9   4.0
5  19 2022-08-01 07:41:38 2022-08-01 07:30:00          22  13.0

注:原期望结果中机器19的Diff值11为笔误,实际计算应为22-9=13


解决方案代码

# 1. 按机器、时间桶、时间戳排序,确保每个组内最新记录排在首位
sorted_df = df.sort_values(by=['M', 'TimeBins', 'DateTime'], ascending=[True, True, False])

# 2. 分组提取每个机器-时间桶的最新记录
latest_records = sorted_df.groupby(by=['M', 'TimeBins'], as_index=False).first()

# 3. 按机器分组计算相邻时间桶的累积值差值
latest_records['Diff'] = latest_records.groupby('M')['Cumulative'].diff()

# 4. 调整列顺序匹配期望输出
final_df = latest_records[['M', 'DateTime', 'TimeBins', 'Cumulative', 'Diff']]

# 查看结果
print(final_df)

核心逻辑说明

  • 排序分组取最新:通过多关键字排序,保证每个机器的每个时间桶内,最新的时间戳记录排在最前面,再用groupby.first()提取唯一记录。
  • 分组计算差值:使用groupby.diff()按机器单独计算相邻区间的累积值差,自动为每个机器的第一个区间生成NaN,无需额外处理边界情况。

内容的提问来源于stack exchange,提问作者EAdiguzel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:15:33