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

如何计算30分钟窗口首尾值差值并保留列?修复时间戳重复偏差

解决30分钟窗口内Item的Value首尾差值计算问题(含重复时间戳处理)

核心需求:针对每个Item,计算其30分钟时间窗口内Value列最后值与第一个值的差值,同时保留AgentStatus、OriginalTimestamp、AgentTimeStamp等其他列;需解决同一Item存在重复时间戳导致的计算偏差问题,确保窗口取对应时间点(如00:00与00:30)的首尾值。


步骤1:预处理去重(解决重复时间戳问题)

同一Item下的重复时间戳会干扰窗口首尾值的判断,先对每个Item的时间戳去重,确保每个时间点仅保留一条有效记录(示例保留每个(Item, OriginalTimestamp)组合的最后一条,可根据需求改为keep='first')。

import pandas as pd

# 读取数据集(CSV/Parquet格式通用,Parquet替换为pd.read_parquet)
df = pd.read_csv('你的数据集文件.csv')

# 转换时间戳列为datetime类型
df['OriginalTimestamp'] = pd.to_datetime(df['OriginalTimestamp'])

# 去重:每个Item+时间戳组合仅保留最后一条记录
df_unique = df.drop_duplicates(subset=['Item', 'OriginalTimestamp'], keep='last')

步骤2:按30分钟窗口计算首尾差值

基于去重后的数据集,分两种场景实现计算:

场景1:生成每个窗口的汇总结果(仅保留窗口级统计)

适合需要按30分钟窗口输出每个Item的差值及对应列信息的场景:

# 设置时间戳为索引,方便重采样
df_unique = df_unique.set_index('OriginalTimestamp')

# 按Item分组,每30分钟重采样计算
result = df_unique.groupby('Item').resample('30T').agg(
    # 计算Value的最后值减第一个值,窗口仅1条记录时差值设为0
    Value_diff=('Value', lambda x: x.iloc[-1] - x.iloc[0] if len(x) >= 2 else 0),
    # 保留其他列的示例:可选择窗口首尾的对应列值
    AgentStatus=('AgentStatus', 'first'),
    AgentTimestamp=('AgentTimestamp', 'last'),
    OriginalTimestamp_start=('OriginalTimestamp', 'first'),
    OriginalTimestamp_end=('OriginalTimestamp', 'last')
).reset_index(drop=True)

场景2:保留原始记录并标记所属窗口的差值

适合需要保留每条原始数据,并显示其所在30分钟窗口的首尾差值的场景:

# 恢复原索引,按Item+时间戳排序
df_unique = df_unique.reset_index().sort_values(['Item', 'OriginalTimestamp'])

# 按Item分组,用30分钟滚动窗口计算差值
df_unique['Value_diff'] = df_unique.groupby('Item').rolling(
    window='30T', on='OriginalTimestamp'
)['Value'].apply(lambda x: x.iloc[-1] - x.iloc[0] if len(x) >= 2 else 0).reset_index(level=0, drop=True)

关键说明

  • 时间窗口对齐:resample('30T')会自动将窗口对齐到30分钟的整数倍(如00:00-00:30、00:30-01:00等),确保窗口严格为30分钟。
  • 差值边界处理:窗口内仅1条记录时差值设为0,可根据业务需求改为NaN或其他默认值。
  • 去重逻辑:若重复时间戳的Value值不同,需先确认保留规则(如取均值、最大值等),再调整去重或预处理逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 10:22:41