我有一个来自数据帧和一个datetime对象的时间戳,我想将它们进行比较以在一个数据帧中进行选择。我的数据如下:
print(type(datetime.datetime.now()))
<class 'datetime.datetime'>
print(type((df.created_at[0])))
<class 'pandas._libs.tslibs.timestamps.Timestamp'>
如何选择带有datetime对象的数据框内的特定行?如下:
df[df.created > datetime.datetime.now()]
但是它返回了以下错误消息:TypeError: Cannot compare tz-naive and tz-aware datetime-like objects
,关于如何解决该问题的任何想法?谢谢!
答案 0 :(得分:2)
Timestamp是可识别时区的对象,而从datetime.datetime.now()
获取的datetime对象是时区未使用的,因为您没有另外指定,因此会出错。您应该转换任何一个,以便它们要么都知道时区,要么都没有时区。
例如,您可以像这样调用datetime.datetime.now()
使其具有时区意识(将来自timestamp对象的时区信息作为参数传递):
datetime.datetime.now(df.created_at[0].tzinfo)
答案 1 :(得分:0)
df[df.created.to_pydatetime() > datetime.datetime.now()]