比较时间戳与日期时间

问题描述 投票:0回答:2

我有一个来自数据帧和日期时间对象的时间戳,我想比较它们以在数据帧中进行选择。我的数据如下:

print(type(datetime.datetime.now()))
<class 'datetime.datetime'>

print(type((df.created_at[0])))
<class 'pandas._libs.tslibs.timestamps.Timestamp'>

如何使用日期时间对象选择该数据框中的特定行?如下:

df[df.created > datetime.datetime.now()]

但它返回给我以下错误消息:

TypeError: Cannot compare tz-naive and tz-aware datetime-like objects
,知道如何解决这个问题吗?谢谢!

python pandas datetime
2个回答
2
投票

Timestamp 是一个时区感知对象,而从

datetime.datetime.now()
获得的日期时间对象是时区天真的对象,因为您没有另外指定,因此会出现错误。您应该进行转换,以便它们要么都支持时区,要么都不支持时区。

例如,您可以像这样调用

datetime.datetime.now()
使其具有时区感知能力(将时间戳对象中的时区信息作为参数传递):

datetime.datetime.now(df.created_at[0].tzinfo)

0
投票
df[df.created.to_pydatetime() > datetime.datetime.now()]

应该可以工作

pandas.Timestamp.to_pydatetime

© www.soinside.com 2019 - 2024. All rights reserved.