35

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

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

4

2 回答 2

45

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

代替:

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

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

self.df["date"] = pd.to_datetime(self.df["date"]).dt.date
于 2020-06-07T14:47:21.543 回答
31

您可以使用

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')

熊猫也有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()
于 2018-08-13T16:54:20.687 回答