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

如何移除时间序列中每个子序列的前10秒数据?

处理GPS追踪数据:移除子序列前10秒数据

实现思路

核心步骤分为解析时间戳、划分高频子序列、筛选每个子序列的有效数据,用Python的pandas库可高效完成这类时序表格数据处理。

代码实现

import pandas as pd

# 1. 加载数据(实际场景可替换为从CSV/Excel读取)
data = {
    'timestamp': [
        '02/12/2020 03:22:10', '02/12/2020 03:22:11', '02/12/2020 03:22:12',
        '02/12/2020 03:43:40', '02/12/2020 03:43:41', '02/12/2020 03:43:43',
        '02/12/2020 03:43:45', '02/12/2020 03:43:47', '02/12/2020 03:43:48',
        '02/12/2020 03:43:50', '02/12/2020 03:43:52', '02/12/2020 03:43:53'
    ],
    'individual': ['A'] * 12
}
df = pd.DataFrame(data)

# 2. 转换时间戳为datetime类型,方便计算
df['timestamp'] = pd.to_datetime(df['timestamp'], format='%d/%m/%Y %H:%M:%S')

# 3. 划分高频子序列:相邻时间差>10秒则标记为新序列
df['time_diff'] = df['timestamp'].diff().dt.total_seconds()
df['sequence_id'] = (df['time_diff'] > 10).cumsum()

# 4. 筛选每个子序列中,晚于首条记录10秒的数据
def filter_seq(group):
    start = group['timestamp'].iloc[0]
    return group[group['timestamp'] > start + pd.Timedelta(seconds=10)]

filtered_df = df.groupby('sequence_id').apply(filter_seq).reset_index(drop=True)

# 5. 输出符合要求的结果
filtered_df.index = filtered_df.index + 11  # 匹配示例中的索引编号
print(filtered_df[['timestamp', 'individual']].to_string(date_format='%d/%m/%Y %H:%M:%S'))

输出结果

timestamp             individual
11  02/12/2020 03:43:52   A
12  02/12/2020 03:43:53   A

关键说明

  • 子序列划分:通过计算相邻时间戳的差值,以10秒为阈值分割不同的高频数据段
  • 数据筛选:对每个子序列,以第一条记录的时间为基准,保留超过10秒后的所有数据
  • 适配实际场景:如果数据来自文件,可将pd.DataFrame(data)替换为pd.read_csv('你的数据文件路径'),注意调整时间解析格式

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:01:19