如何检查pandas DataFrame日期列最大与最小日期间的所有日期是否存在并找出缺失日期
实现步骤
核心思路是先把日期列转为可运算的时间类型,生成完整日期范围后和现有日期做对比,步骤如下:
- 转换Date列数据类型为pandas datetime格式,避免字符串比较的误差
- 生成现有日期最大值和最小值之间的连续完整日期序列
- 对比现有去重日期和完整序列,筛选出缺失的日期后转为指定格式的列表
完整代码示例
import pandas as pd # 构造示例DataFrame df = pd.DataFrame({"Date":["09-01-2021","09-02-2021","09-02-2021","09-04-2021"]}) # 1. 转换为datetime类型,指定格式避免解析错误 df["Date"] = pd.to_datetime(df["Date"], format="%m-%d-%Y") # 2. 生成完整的连续日期序列 full_dates = pd.date_range(start=df["Date"].min(), end=df["Date"].max(), freq="D") # 3. 筛选缺失日期并转为目标格式列表 missing_dates = full_dates[~full_dates.isin(df["Date"].unique())].strftime("%m-%d-%Y").tolist() print(missing_dates)
输出结果
['09-03-2021']
如果需要快速检查是否所有日期都存在,直接判断len(missing_dates) == 0即可,返回True代表无缺失日期,返回False代表存在缺失。
内容的提问来源于stack exchange,提问作者NAS_2339
相关产品推荐
相关产品推荐

