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

使用Python筛选CSV中未来入职日期(DOH)结果异常问题排查

问题:筛选CSV中入职日期晚于今日的记录结果与预期相反

需要校验CSV文件中的入职日期(DOH),筛选出日期晚于今日的异常记录并导出至Excel文件,但运行代码后得到的却是早于今日的记录,与预期相反。CSV文件的日期格式为MM/DD/YYYY,怀疑问题出在dt.datetime.today().strftime('%m/%d/%Y')这一行。

原代码如下:

import pandas as pd
import datetime as dt

# Read csv file
df=pd.read_csv("data.csv", engine="python", header=None)

# Add column header names
df.columns=["EmployeeID", "LastName", "FirstName", "DOB", "Email", "Salary", "DOH", "TermDate"]

# Determine which Dates of Hire are earlier than today's date
df0 = df.loc[df["DOH"] > (dt.datetime.today().strftime('%m/%d/%Y')), ["EmployeeID", "LastName", "FirstName", "DOH"]]

# Print dataframe output to separate worksheet within one Excel file
with pd.ExcelWriter("ErrorOutput.xlsx") as writer:
    df0.to_excel(writer, sheet_name="Incorrect DOH", index=False)

问题原因与修复方案

核心问题

你当前是在做字符串比较而非真正的日期比较:

  • CSV读取后DOH列默认是字符串类型,dt.datetime.today().strftime('%m/%d/%Y')生成的也是字符串
  • 字符串比较按字典序进行,比如"01/15/2025"和"12/31/2024"比较时,因"0" < "1"会错误判定"01/15/2025" < "12/31/2024",导致筛选逻辑完全混乱。

修复步骤

  1. 将DOH列转换为日期类型,匹配CSV的MM/DD/YYYY格式
  2. 使用日期对象而非字符串进行比较,避免字典序干扰

修改后的代码

import pandas as pd
import datetime as dt

# 读取CSV并指定DOH列为日期类型,格式为MM/DD/YYYY
df = pd.read_csv("data.csv", engine="python", header=None, parse_dates=["DOH"], date_parser=lambda x: pd.to_datetime(x, format="%m/%d/%Y"))

# 添加列名
df.columns = ["EmployeeID", "LastName", "FirstName", "DOB", "Email", "Salary", "DOH", "TermDate"]

# 获取今日纯日期(去除时分秒)
today = dt.date.today()

# 筛选入职日期晚于今日的异常记录
df0 = df.loc[df["DOH"].dt.date > today, ["EmployeeID", "LastName", "FirstName", "DOH"]]

# 导出至Excel
with pd.ExcelWriter("ErrorOutput.xlsx") as writer:
    df0.to_excel(writer, sheet_name="Incorrect DOH", index=False)

补充说明

  • 如果读取时指定parse_dates报错,可在读取后单独转换列:
    df["DOH"] = pd.to_datetime(df["DOH"], format="%m/%d/%Y")
    
  • 用dt.date.today()获取纯日期对象,和DOH提取的日期部分比较,避免时间(时分秒)干扰

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.20 22:15:15