pandas 中 datetime 和 datetime64[ns] 的比较

Comparison between datetime and datetime64[ns] in pandas

我正在编写一个检查 excel 文件的程序,如果今天的日期在 excel 文件的日期列中,我会解析它

我正在使用:

cur_date = datetime.today()

今天的约会。我正在检查今天是否在列中:

bool_val = cur_date in df['date'] #evaluates to false

我确实知道今天的日期在相关文件中。该系列的 dtype 是 datetime64[ns]

此外,我只检查日期本身,而不是之后的时间戳,如果这很重要的话。我这样做是为了制作时间戳 00:00:00:

cur_date = datetime.strptime(cur_date.strftime('%Y_%m_%d'), '%Y_%m_%d')

打印后该对象的类型也是日期时间

您可以使用

pd.Timestamp('today')

pd.to_datetime('today')

但这两个都给出了 'now' 的日期和时间。


试试这个:

pd.Timestamp('today').floor('D')

pd.to_datetime('today').floor('D')

您也可以将 datetime 对象传递给 pandas.to_datetime,但我喜欢另一个选项 mroe。

pd.to_datetime(datetime.datetime.today()).floor('D')

Pandas也有一个Timedelta对象

pd.Timestamp('now').floor('D') + pd.Timedelta(-3, unit='D')

或者您可以使用 offsets 模块

pd.Timestamp('now').floor('D') + pd.offsets.Day(-3)

要检查成员资格,请尝试其中一种方法

cur_date in df['date'].tolist()

或者

df['date'].eq(cur_date).any()

对于在将数据框日期与可变日期进行比较时也偶然发现此问题的任何人,这并不能完全回答您的问题;您可以使用下面的代码。

而不是:

self.df["date"] = pd.to_datetime(self.df["date"])

您可以导入日期时间,然后将 .dt.date 添加到末尾,例如:

self.df["date"] = pd.to_datetime(self.df["date"]).dt.date