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

如何检测Pandas DataFrame中首日期后每对日期是否连续

验证Pandas DataFrame中相邻日期对是否连续(间隔1天)

基础场景:无分组,全局检查相邻日期

步骤:

  1. 将日期列转换为datetime类型(确保后续差值计算准确)
  2. 计算相邻日期的差值
  3. 对比差值是否等于1天(pd.Timedelta(days=1))

示例代码:

import pandas as pd

# 构建示例DataFrame
data = {'日期': ['2023-01-01', '2023-01-02', '2023-01-04', '2023-01-05', '2023-01-06']}
df = pd.DataFrame(data)

# 转换日期类型
df['日期'] = pd.to_datetime(df['日期'])

# 计算相邻日期是否连续
df['是否连续'] = df['日期'].diff() == pd.Timedelta(days=1)

print(df)

输出结果:

日期  是否连续
0 2023-01-01    NaN
1 2023-01-02   True
2 2023-01-04  False
3 2023-01-05   True
4 2023-01-06   True

注:第一行结果为NaN,因为首个日期没有前序日期可对比,符合“首个日期之后的相邻对”的检查需求


进阶场景:按分组检查组内相邻日期

如果数据按类别分组(如用户ID、部门等),需要每个组内独立检查相邻日期,可按以下方式处理:

步骤:

  1. 转换日期列为datetime类型
  2. 按分组列+日期列排序(确保组内日期顺序正确)
  3. 分组计算日期差值并判断是否连续

示例代码:

import pandas as pd

# 构建带分组的示例DataFrame
data = {
    '日期': ['2023-01-01', '2023-01-04', '2023-01-02', '2023-01-06', '2023-01-05'],
    '用户ID': ['A', 'A', 'A', 'B', 'B']
}
df = pd.DataFrame(data)

# 转换日期类型
df['日期'] = pd.to_datetime(df['日期'])

# 按分组列和日期排序,确保组内日期顺序正确
df = df.sort_values(['用户ID', '日期']).reset_index(drop=True)

# 分组计算组内相邻日期是否连续
df['组内是否连续'] = df.groupby('用户ID')['日期'].diff() == pd.Timedelta(days=1)

print(df)

输出结果:

日期 用户ID 组内是否连续
0 2023-01-01    A      NaN
1 2023-01-02    A     True
2 2023-01-04    A    False
3 2023-01-05    B      NaN
4 2023-01-06    B     True

关键说明

  • 必须确保日期列是datetime类型,否则diff()无法正确计算时间间隔
  • 如果分组后日期乱序,一定要先排序,否则相邻差值的逻辑会出错
  • 首个日期对应的结果为NaN,代表无需检查;后续每行结果对应当前日期与前一行日期的连续性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 00:45:13