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

如何删除DataFrame中不属于指定长度连续日期序列的行

解决方案

完全不用逐行遍历,用pandas原生向量化操作即可,处理百万级数据也没有性能压力,逻辑和你的需求完全匹配:

核心逻辑

通过相邻日期的差值拆分连续日期块,直接过滤长度不达标的块即可,代码实现如下:

import pandas as pd

# 1. 预处理:先对日期列排序+转格式,若你的原始数据已经按日期升序排列可跳过排序步骤
df = df.sort_values('Date', ignore_index=True)
df['Date'] = pd.to_datetime(df['Date'], format='%d.%m.%Y')

# 2. 标记连续日期分组:日期差超过1天的位置就生成新的分组ID
df['group_id'] = df['Date'].diff().dt.days.ne(1).cumsum()

# 3. 过滤长度>=t的分组,删除辅助列得到结果
t = 3 # 替换为你需要的连续天数阈值
df_res = df.groupby('group_id').filter(lambda x: len(x) >= t).drop(columns='group_id')

效果验证

和你给出的示例完全匹配:

  • 当t=3时,13号所在的分组长度只有1,被过滤,仅保留前7行
  • 当t=4时,4-6号所在分组长度为3、13号所在分组长度为1,均被过滤,仅保留8-11号的4行数据

注意事项

如果你的日期存在重复值,可先执行df = df.drop_duplicates('Date', keep='first', ignore_index=True)去重后再执行上述逻辑,避免分组统计长度出错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 20:06:03