将今天的日期与CSV文件中的未来日期进行比较

dffbzjpn  于 2023-05-26  发布在  其他
关注(0)|答案(2)|浏览(186)
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)。我希望将来的DOH记录在Excel文件中显示为错误记录。
当我运行代码时,我得到的记录中的日期早于今天的日期,这与我想要的相反。我猜我的dt.datetime.today().strftime('%m/%d/%Y')线是问题所在。文件日期格式为MM/DD/YYYY。

bprjcwpo

bprjcwpo1#

检查字符串是否大于另一个字符串似乎会导致问题。我写了一个小脚本,将今天的日期与以前的日期和下个月的日期进行比较,但是当我比较它们时,它们的值都显示为false。也许您可以将日期转换为自epoch以来的整数值,或者将日期格式化为不带斜杠的字符串并将其转换为整数。下面的代码片段显示了字符串比较失败,但如果我格式化不带斜杠并转换为int,则可以正常工作。

import datetime as dt

april_date = "4/20/2023"
last_year_date = "10/30/2022"
next_month = "6/16/2023"

today = dt.datetime.today().strftime('%m/%d/%Y')

print("Today: ", today)
print("Next month: ", next_month, today > next_month)
print("April Date: ", april_date, today > april_date)
print("Last Year Date: ", last_year_date, today > last_year_date)

#Formatting the dates without slashes and converting them to ints yields the correct comparison result

today = int(dt.datetime.today().strftime('%m%d%Y'))
next_month = int("06162023")
april_date = int("04202023")

print("Next month int: ", next_month, today > next_month)
print("April Date int: ", april_date, today > april_date)
blmhpbnm

blmhpbnm2#

您似乎忘记将DOH解析为日期。此外,不需要外部 datetime 模块:

headers = [
    "EmployeeID", "LastName", "FirstName",
    "DOB", "Email", "Salary", "DOH", "TermDate"
]

df = pd.read_csv("data.csv", header=None, names=headers, parse_dates=["DOH"])

df0 = df.loc[df["DOH"] > pd.Timestamp("now"),
             ["EmployeeID", "LastName", "FirstName", "DOH"]]

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

相关问题