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

如何用Pandas高效删除时间间隔小于10秒的DataFrame行?

解决方案

可以用Pandas的diff()方法结合布尔索引实现,完全不需要循环,代码简洁高效:

import pandas as pd

# 构造示例DataFrame
df = pd.DataFrame({
    'Index': [1, 2, 3, 4, 5],
    'SecOfDay': [0, 10, 21, 23, 31]
}).set_index('Index')

# 计算当前行与前一行的数值差
diff_series = df['SecOfDay'].diff()

# 生成过滤掩码:保留第一行,或差值≥10的行
mask = pd.isna(diff_series) | (diff_series >= 10)

# 过滤得到目标结果
result_df = df[mask]
print(result_df)

运行后输出结果:

SecOfDay
Index           
1              0
2             10
3             21
5             31

逻辑说明

  • diff()方法自动计算列中当前行与前一行的差值,第一行因无前置行返回NaN
  • 掩码通过pd.isna(diff_series)保留第一行,diff_series >=10筛选出差值符合要求的行,两者用|(逻辑或)组合
  • 布尔索引直接过滤DataFrame,性能远优于循环,尤其适配大数据量场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 10:51:09