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

如何筛选DataFrame中含非日期格式或空白值的行?

筛选含无效日期/空白值行的最优方法

核心思路

利用 pandas 的pd.to_datetime函数,将目标日期列尝试转换为日期格式——非日期格式、空白值会被强制转为NaT(Not a Time),之后筛选出**至少有一个日期列是NaT**的行即可。

完整实现代码

import pandas as pd

# 构造原始DataFrame
data = {
    'Person Type': ['Employee', 'Employee', 'Employee', 'employee', 'Employee', 'Employee'],
    'Hire Date': ['2010-12-01', '2011-03-13', '', '?', '2012-12-19', '2013-02-07'],
    'Original Hire Date': ['2010-12-01', 'xxx', '2012-01-02', '2', '2012-12-19', '2013-02-07']
}
df = pd.DataFrame(data)

# 定义需要检查的日期列
date_columns = ['Hire Date', 'Original Hire Date']

# 生成筛选掩码:每行只要有一个日期列无法转为有效日期,就标记为True
invalid_mask = df[date_columns].apply(pd.to_datetime, errors='coerce').isna().any(axis=1)

# 筛选出目标行
invalid_rows = df[invalid_mask]
print(invalid_rows)

方法优势

  1. 兼容性强:无需手动编写正则匹配各种日期格式,pd.to_datetime能自动识别绝大多数标准日期/时间格式,同时自动处理空白值。
  2. 效率高:基于 pandas 向量化操作,处理大数据集时比循环判断快得多。
  3. 代码简洁:逻辑清晰,一行掩码即可完成筛选条件的构建,易读易维护。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:33:23