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

将带TimeStamp的数值数据转换为值持续时长统计格式

时间序列数据合并为连续值区间

需求说明

将按时间递增排列的时间戳-数值序列,合并为展示每个数值持续区间的格式:起始时间(包含)、结束时间(不包含)、对应数值。最后一个区间的结束时间标记为null。

输入数据

TimeStampValue
ts110
ts220
ts320
ts430
ts540
ts640
ts710

输出结果

startTime(Inclusive)endtime (Exclusive)Value
ts1ts210
ts2ts420
ts4ts530
ts5ts740
ts7null10

实现思路(以Python为例)

遍历输入序列,记录当前数值的起始时间;当遇到数值变化时,将当前区间写入结果集,同时更新起始时间和当前数值。遍历结束后,单独处理最后一个未闭合的区间。

def merge_continuous_values(data):
    if not data:
        return []
    
    result = []
    current_val = data[0]['Value']
    start_ts = data[0]['TimeStamp']
    
    for idx in range(1, len(data)):
        curr_ts, curr_val = data[idx]['TimeStamp'], data[idx]['Value']
        if curr_val != current_val:
            result.append({
                'startTime(Inclusive)': start_ts,
                'endtime (Exclusive)': curr_ts,
                'Value': current_val
            })
            current_val = curr_val
            start_ts = curr_ts
    
    # 处理最后一个区间
    result.append({
        'startTime(Inclusive)': start_ts,
        'endtime (Exclusive)': 'null',
        'Value': current_val
    })
    
    return result

# 输入数据示例
input_data = [
    {'TimeStamp': 'ts1', 'Value': 10},
    {'TimeStamp': 'ts2', 'Value': 20},
    {'TimeStamp': 'ts3', 'Value': 20},
    {'TimeStamp': 'ts4', 'Value': 30},
    {'TimeStamp': 'ts5', 'Value': 40},
    {'TimeStamp': 'ts6', 'Value': 40},
    {'TimeStamp': 'ts7', 'Value': 10}
]

# 生成并打印结果
output = merge_continuous_values(input_data)
for item in output:
    print(item)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 12:42:50