Pandasdatetime与datetime64[ns]的比较

ergxz8rk  于 2022-11-27  发布在  其他
关注(0)|答案(3)|浏览(201)

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

cur_date = datetime.today()

今天的日期。我正在检查今天是否在列中:

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

我确实知道今天的日期在所讨论的文件中。序列的dtype是datetime64[ns]
另外,我只检查日期本身,而不检查之后的时间戳(如果这很重要的话)。

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

打印后该对象的类型也是datetime

xiozqbni

xiozqbni1#

对于那些在比较 Dataframe 日期和可变日期时偶然发现这个问题的人来说,这并没有完全回答你的问题;可以使用下面的代码。
代替:

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

您可以导入日期时间,然后将. www.example.com添加dt.date到末尾,如下所示:

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

gdrx4gfi2#

您可以使用

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()
s3fp2yjn

s3fp2yjn3#

当使用pd.Timestamp()转换datetime 64类型时,请务必注意,您应该将其与另一个时间戳类型(不是datetime.date类型)进行比较。
将日期转换为numpy.datetime64

date = '2022-11-20 00:00:00'
date64 = np.datetime64(date)

七天前-时间戳类型

sevenDaysAgoTs = (pd.to_datetime('today')-timedelta(days=7))

将date 64转换为Timestamp并查看它是否在过去7天内

print(pd.Timestamp(pd.to_datetime(date64)) >= sevenDaysAgoTs)

相关问题