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

如何用pd.duplicated()查找Pandas DataFrame中日期差±2天的重复行

实现步骤
  • 第一步:先将DOB字段转换为Pandas datetime类型,避免日期计算出错
import pandas as pd
df['DOB'] = pd.to_datetime(df['DOB'])
  • 第二步:筛选number、GENDER、Code三个字段重复的行(你原有代码可直接复用)
df_dup = df.loc[df.duplicated(subset=["number","GENDER","Code"],keep=False)]
  • 第三步:按三个字段分组,追加日期差值判断条件
def check_date_range(group):
    # 计算组内所有日期两两差值的绝对值,转换为天数
    day_diff = abs(group['DOB'].values[:, None] - group['DOB'].values).astype('timedelta64[D]').astype(int)
    # 只要当前行存在至少1个同组其他行的差值≤2天,就保留该行
    return (day_diff <= 2).sum(axis=1) > 1

result = df_dup[df_dup.groupby(["number","GENDER","Code"]).apply(check_date_range).explode().values]

逻辑说明

该方法通过计算同组内日期的两两时间差,不受跨月、跨年场景影响,判断逻辑准确。用你提供的示例数据运行后,得到的结果和你给出的预期输出完全一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 21:00:06