熊猫中的datetime和datetime64 [ns]之间的比较

时间:2018-08-13 16:52:39

标签: python pandas datetime datetime64

我正在编写一个检查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')

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

2 个答案:

答案 0 :(得分:7)

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

代替:

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

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

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

答案 1 :(得分:5)

您可以使用

pd.Timestamp('today')

pd.to_datetime('today')

但是,两者都给出了'now'的日期和时间。


尝试以下方法:

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

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

您也可以将datetime对象传递给pandas.to_datetime,但我喜欢其他选项。

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

熊猫也有一个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()